[求助]请教高手,如何做到框选这些标注后就生成下面红色的标注?
www.dimcax.com
[求助]请教高手,如何做到框选这些标注后就生成下面红色的标注?如何做到框选这些标注后就生成下面红色的标注?
d
红色的直应是6170吧
(defun bz (/ ss_dim dxf_dim code_13_lst code_14_lst al_point_lst n)
(prompt "\n选择尺寸:")
(setq ss_dim (ssget (list (cons 0 "dimension"))) n 0)
(if ss_dim
(repeat (sslength ss_dim)
(setq dxf_dim (entget (ssname ss_dim n))
code_13_lst (cdr (assoc 13 dxf_dim))
code_14_lst (cdr (assoc 14 dxf_dim))
al_point_lst (append al_point_lst (list code_13_lst) (list code_14_lst))
n (1+ n))
)
)
;只处理水平坐标,垂直坐标把排序改一下
(if al_point_lst (setq al_point_lst (vl-sort al_point_lst (function (lambda (e1 e2) (> (car e1 ) (car e2)))))))
(command "dimlinear" (nth 0 al_point_lst) (last al_point_lst) (getpoint "\n选取尺寸定位点:"))
)
自己再改一下应可以实现你要的效果。。。
d
delin001,那如何判断是垂直还是水平的呢?
d
在晓东上,热心的高手kmdz已经完成得差不多了:
思路:复制选集中的一个标注,提取选集的13,14成表,移除13和14相同的项,得到新标注的两个端点,修改复制的那个标注定义数据。标注位置可以自己指定,也可由程序自行计算位置。
代码

defun c:t1 () (defun *error* (msg) (print msg) (print "\n检查标注是否都在一条线上或有重合?") (entdel (entlast)) (setq *error* nil dim-dxf-lst nil ) ) (while (and (not (prompt "\n选择需要累加的标注:")) (setq dim-ss (ssget '((0 . "dimension") (1 . "")))) (> (setq dim-ss-n (sslength dim-ss)) 1) (vl-cmdf "copy" (ssname dim-ss 0) "" '(0 0) '(0 0)) (setq dim-dxf-14 (cdr (assoc 14 (entget (ssname dim-ss 0)))) dim-dxf-10 (cdr (assoc 10 (entget (ssname dim-ss 0)))) dim-dis-1410 (distance dim-dxf-14 dim-dxf-10) dim-ang-1410 (angle dim-dxf-14 dim-dxf-10) dim-dxf-10 (polar dim-dxf-10 dim-ang-1410 (* dim-dis-1410 (1- dim-ss-n)) ) ) ) (if (setq tmp (getpoint "\n指定尺寸标注位置:")) (setq dim-dxf-10 tmp) ) (setq dim-dxf-lst nil) (repeat dim-ss-n (setq dim-dxf-lst (append (list (cdr (assoc 13 (entget (ssname dim-ss (setq dim-ss-n (1- dim-ss-n)))) ) ) (cdr (assoc 14 (entget (ssname dim-ss dim-ss-n)))) ) dim-dxf-lst ) ) ) (foreach m dim-dxf-lst (setq i 0) (foreach n dim-dxf-lst (if (equal m n) (if (> (setq i (1+ i)) 1) (setq dim-dxf-lst (vl-remove m dim-dxf-lst)) ) ) ) ) (setq dim-ent (entget (entlast)) dim-ent (subst (cons 13 (nth 0 dim-dxf-lst)) (assoc 13 dim-ent) dim-ent ) dim-ent (subst (cons 14 (nth 1 dim-dxf-lst)) (assoc 14 dim-ent) dim-ent ) dim-ent (subst (cons 10 dim-dxf-10) (assoc 10 dim-ent) dim-ent) ) (entmod dim-ent) ))但有个问题,标注线是在一条直线上,但首尾标注点不对齐的话,好像就处理不了。
而且,可不可以改成只需要确定偏移的方向,就可以自动在离标注线500的位置进行标注呢?
d
我觉得标注跟图层最好!用change就可以改成什么色都可以
d