f5612140 发表于 2004-3-9 10:40:00

[讨论]如何選取弧,刪除弧上的文字

如題,文字插入點在弧上

meflying 发表于 2004-3-9 19:51:00

(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)
)
      

无痕 发表于 2004-3-9 21:25:00

(if (equal 0 (vlax-curve-getclosestpointto       arcobj (vla-get-InsertionPoint       textobj) )       0.1)


....

无痕 发表于 2004-3-9 21:56:00

本帖最后由 作者 于 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)
)

f5612140 发表于 2004-3-10 10:00:00

to:meflying


感謝,獻花一朵


to:无痕


會出現 "損壞的引數類型: safearrayp nil"

无痕 发表于 2004-3-10 13:52:00

已经修改了。


将(vlax-invoke arcobj 'GetBoundingBox 'minpt 'maxpt)<BR>


改为(vla-GetBoundingBox arcobj 'minpt 'maxpt)

meflying 发表于 2004-3-10 21:27:00

to:<A name=3228><FONT color=#0000ff><B>无痕</B></FONT></A>


vlax-curve-getclosestpointto这一类函数支持ename对象,无意中发现的

f5612140 发表于 2004-3-11 09:00:00

to:<A name=3228><FONT color=#0000ff><B>无痕</B></FONT></A>


Ok,獻花一朵

龙龙仔 发表于 2004-3-11 13:06:00

无痕发表于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>

无痕 发表于 2004-3-11 17:40:00

谢谢lucas,我说这次怎么不行了呢?原来是漏了method :),一时间没转过神来,不好意思
页: [1]
查看完整版本: [讨论]如何選取弧,刪除弧上的文字