请高手帮帮忙
(vl-load-com)<br/> (setvar "cmdecho" 0)<br/> (setvar "osmode" 0)<br/> (setq hxss (ssadd))<br/> (setq s (ssget '((0 . "line"))))<br/> (repeat (setq s1 (sslength s))<br/> (setq s_ent (ssname s (setq s1 (1- s1))))<br/> (setq ent (entget s_ent))<br/> (setq pt1 (cdr (assoc 10 ent))<br/> pt2 (cdr (assoc 11 ent))<br/> )<br/> (setq zw_s (ssget "_F" (list pt1 pt2) '((0 . "insert"))))<br/> (if (/= zw_s nil)<br/> (progn<br/> (repeat (setq zw_s1 (sslength zw_s))<br/> (setq bjyxlst '() lsts 0)<br/> (setq zw_ent (ssname zw_s (setq zw_s1 (1- zw_s1))))<br/> (if (not (ssmemb zw_ent hxss))<br/> (progn<br/> (setq hxss (ssadd zw_ent hxss))<br/> (setq zwent (entget zw_ent))<br/> (setq tkm (cdr (assoc 2 zwent)))<br/> (setq pins (cdr (assoc 10 zwent)))<br/> (setq ang (cdr (assoc 50 zwent)))<br/> (setq zty (entget (cdr (assoc -2 (tblsearch "block" tkm)))))<br/> (ch_z zty pins ang)<br/> (setq bjyxlst (reverse bjyxlst))<br/> (repeat (length bjyxlst)<br/> (setq zbd (cdr (nth lsts bjyxlst)))<br/> (setq zjd (vlax-curve-getClosestPointTo s_ent zbd T))<br/> (if (/= (distance zbd zjd) 0)<br/> (command "_dimaligned" zbd zjd (polar zjd pi 1000))<br/> )<br/> (setq lsts (1+ lsts))<br/> )<br/> )<br/> )<br/> )<br/> )<br/> )<br/> )<br/> (setvar "osmode" 37)<br/> (setvar "cmdecho" 1)<br/> (princ)<br/><br/><br/>这段代码是对直线上图块里的圆进行标注~为什么每个图块第一次标注时正常~~<br/>把标注删除后~~再对该图块进行标注时确无法标注了~~也没有任何出错信息<br/>把图纸关了重新打开又能标注了~但同一图块只能标一次~<br/> <p> (setq bjyxlst '() lsts 0)</p><p>(ch_z zty pins ang)<br/> (setq bjyxlst (reverse bjyxlst))</p><p>啥意思。。。</p><p>听不懂你要干嘛???</p><p></p> bjyxlst里面是由ch_z函数提取出来的圆心坐标~<br/><br/>我的意思是为什么同一个图块只能标注一次~<br/>把标注删了~再重新标注时就没反应了~~<br/>也没提示出错~运行完代码但不标注<br/><br/>把图纸关了重新打开又能标注了~~但也只能标一次~~<br/>删了标注重标就又不行了~~<br/> <p>最好抓个图来。。。</p><p>上面的代码太乱。。。</p><p>懒的看。</p><p>把需求说清楚,重新写更快。</p> 怎么把电脑里的图发上来??? 是不是这样子的。。。以线选择块。。。
按你的需求,我猜测的。。。
;;LINE-BLOCK-DIMALIGNED 线和块标注 By carrot1983 2009-02-13
(defun C:TT (/ ELIST PT SS SS1 V10 CMDECHO)
;;(CAI-SS-VALUES SS -1) By carrot1983
(defun CAI-SS-VALUES (SS ITEM / I VALUES)
(repeat (setq I (sslength SS))
(setq
VALUES
(cons
(cdr (assoc ITEM (entget (ssname SS (setq I (1- I))))))
VALUES
)
)
)
VALUES
)
(defun CAI-DXF (ITEM ELIST)
(cdr (assoc ITEM ELIST))
)
(command "._UNDO" "_BEGIN")
(setq CMDECHO (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(if (setq SS (ssget '((0 . "LINE"))))
(foreach E (CAI-SS-VALUES SS -1)
(if
(and (setq ELIST (entget E))
(setq
SS1 (ssget "_F"
(list (CAI-DXF 10 ELIST) (CAI-DXF 11 ELIST))
'((0 . "INSERT"))
)
)
)
(foreach E1 (CAI-SS-VALUES SS1 -1)
(setq ELIST (entget E1)
V10 (CAI-DXF 10 ELIST)
)
(setq PT (vlax-curve-getclosestpointto E V10))
(command "._DIMALIGNED"
"_NONE"
PT
"_NONE"
V10
"_NONE"
(polar V10 (+ (* 0.5 pi) (angle PT V10)) 1000) ;_标注尺寸界线长度1000
)
)
)
)
)
(setvar "CMDECHO" CMDECHO)
(command "._UNDO" "_END")
(princ)
)
差不多是这个意思~~<br/><br/>我写的也能标出来~~<br/>可为什么把标好的尺寸删除~或撤消后~<br/>再对那些标过的圆进行标注时却没反映了,也没见出错信息<br/><br/><br/>那个动画咋发的???????<br/> 弄清了~~原来有个存圆心坐标的表没有设为局部变量<br/><br/>郁闷~~弄了半天就这原因<br/>
页:
[1]