[讨论]如何選取弧,刪除弧上的文字
如題,文字插入點在弧上 (setq a 0.1)控制精度(defun c:test( / ents start_ang end_ang pt_center r ss i ent pt ang a)(defun between(ang ang1 ang2)
(cond
((< ang1 ang2) (and (>= ang start_ang) (<= ang end_ang)))
((> ang1 ang2) (or (>= ang start_ang) (<= ang end_ang)))
)
)
(setq a 0.1)
(setq ents (entget (car (entsel "选择圆弧..."))))
(setq start_ang (cdr (assoc 50 ents)))
(setq end_ang (cdr (assoc 51 ents)))
(setq pt_center (cdr (assoc 10 ents)))
(setq r (cdr (assoc 40 ents)))
(setq ss (ssget "x" '((0 . "text,mtext"))))
(setq i 0)
(repeat (sslength ss)
(setq ent (ssname ss i))
(setq pt (cdr (assoc 10 (entget ent))))
(if (and (equal r (distance pt pt_center) a) (between (angle pt_center pt) start_ang end_ang))
(entdel ent)
)
(setq i (1+ i))
)
(princ)
)
(if (equal 0 (vlax-curve-getclosestpointto arcobj (vla-get-InsertionPoint textobj) ) 0.1)
.... 本帖最后由 作者 于 2004-3-10 13:54:06 编辑
;选择圆弧上的文字,文字插入点在圆弧上-----------------------------------无痕.2004.2
(defun c:getarctt (/ arcobj sstxt ss n textobj textpt)
(setq arcobj (vlax-ename->vla-object (car(entsel "\n选择圆弧:"))))
(vla-GetBoundingBox arcobj 'minpt 'maxpt);;
(setq sstxt (ssadd)
ss (ssget "c" (vlax-safearray->list minpt) (vlax-safearray->list maxpt) '((0 . "*text"))))
(repeat (setq n (sslength ss))
(setq textobj (vlax-ename->vla-object (setq e (ssname ss (setq n (1- n)))))
textpt (vlax-get textobj 'InsertionPoint))
(if (equal 0 (distance textpt (vlax-curve-getclosestpointto arcobj textpt 0)) 0.1)
(setq sstxt (ssadd e sstxt))
)
)(sssetfirst sstxt sstxt)
) to:meflying
感謝,獻花一朵
to:无痕
會出現 "損壞的引數類型: safearrayp nil" 已经修改了。
将(vlax-invoke arcobj 'GetBoundingBox 'minpt 'maxpt)<BR>
改为(vla-GetBoundingBox arcobj 'minpt 'maxpt) to:<A name=3228><FONT color=#0000ff><B>无痕</B></FONT></A>
vlax-curve-getclosestpointto这一类函数支持ename对象,无意中发现的 to:<A name=3228><FONT color=#0000ff><B>无痕</B></FONT></A>
Ok,獻花一朵 无痕发表于2004-3-10 13:52:00static/image/common/back.gif已经修改了。
将(vlax-invoke arcobj 'GetBoundingBox 'minpt 'maxpt)
改为(vla-GetBoundingBox arcobj 'minpt 'maxpt)
<BR>改;(vlax-invoke-method arcobj 'GetBoundingBox 'minpt 'maxpt)<BR> 谢谢lucas,我说这次怎么不行了呢?原来是漏了method :),一时间没转过神来,不好意思
页:
[1]