明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2191|回复: 9

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

[复制链接]
发表于 2004-3-9 10:40 | 显示全部楼层 |阅读模式
如題,文字插入點在弧上
发表于 2004-3-9 19:51 | 显示全部楼层
(setq a 0.1)控制精度
  1. (defun c:test( / ents start_ang end_ang pt_center r ss i ent pt ang a)
  2.    (defun between(ang ang1 ang2)
  3.        (cond
  4.            ((< ang1 ang2) (and (>= ang start_ang) (<= ang end_ang)))
  5.            ((> ang1 ang2) (or (>= ang start_ang) (<= ang end_ang)))
  6.        )
  7.    )
  8.    (setq a 0.1)
  9.    (setq ents (entget (car (entsel "选择圆弧..."))))
  10.    (setq start_ang (cdr (assoc 50 ents)))
  11.    (setq end_ang (cdr (assoc 51 ents)))
  12.    (setq pt_center (cdr (assoc 10 ents)))
  13.    (setq r (cdr (assoc 40 ents)))
  14.    (setq ss (ssget "x" '((0 . "text,mtext"))))
  15.    (setq i 0)
  16.    (repeat (sslength ss)
  17.        (setq ent (ssname ss i))
  18.        (setq pt (cdr (assoc 10 (entget ent))))
  19.        (if (and (equal r (distance pt pt_center) a) (between (angle pt_center pt) start_ang end_ang))
  20.            (entdel ent)
  21.        )
  22.        (setq i (1+ i))
  23.    )
  24.    (princ)
  25. )
  26.       
发表于 2004-3-9 21:25 | 显示全部楼层
(if (equal 0 (vlax-curve-getclosestpointto         arcobj (vla-get-InsertionPoint         textobj) )         0.1)


....
发表于 2004-3-9 21:56 | 显示全部楼层
本帖最后由 作者 于 2004-3-10 13:54:06 编辑
  1. ;选择圆弧上的文字,文字插入点在圆弧上-----------------------------------无痕.2004.2
  2. (defun c:getarctt (/ arcobj sstxt ss n textobj textpt)
  3.    (setq arcobj (vlax-ename->vla-object (car(entsel "\n选择圆弧:"))))
  4.    (vla-GetBoundingBox arcobj 'minpt 'maxpt);;
  5.    (setq sstxt (ssadd)
  6.   ss (ssget "c" (vlax-safearray->list minpt) (vlax-safearray->list maxpt) '((0 . "*text"))))
  7.    (repeat (setq n (sslength ss))
  8.        (setq textobj (vlax-ename->vla-object (setq e (ssname ss (setq n (1- n)))))
  9.      textpt (vlax-get textobj 'InsertionPoint))
  10.        (if (equal 0 (distance textpt (vlax-curve-getclosestpointto arcobj textpt 0))   0.1)
  11.                (setq sstxt (ssadd   e sstxt))
  12.        )
  13.    )(sssetfirst sstxt sstxt)
  14. )
 楼主| 发表于 2004-3-10 10:00 | 显示全部楼层
to:meflying


感謝,獻花一朵


to:无痕


會出現 "損壞的引數類型: safearrayp nil"
发表于 2004-3-10 13:52 | 显示全部楼层
已经修改了。 将(vlax-invoke arcobj 'GetBoundingBox 'minpt 'maxpt)
改为(vla-GetBoundingBox arcobj 'minpt 'maxpt)
发表于 2004-3-10 21:27 | 显示全部楼层
to:无痕 vlax-curve-getclosestpointto这一类函数支持ename对象,无意中发现的
 楼主| 发表于 2004-3-11 09:00 | 显示全部楼层
to:无痕 Ok,獻花一朵
发表于 2004-3-11 13:06 | 显示全部楼层
无痕发表于2004-3-10 13:52:00已经修改了。 将(vlax-invoke arcobj 'GetBoundingBox 'minpt 'maxpt) 改为(vla-GetBoundingBox arcobj 'minpt 'maxpt)

改;(vlax-invoke-method arcobj 'GetBoundingBox 'minpt 'maxpt)
发表于 2004-3-11 17:40 | 显示全部楼层
谢谢lucas,我说这次怎么不行了呢?原来是漏了method :),一时间没转过神来,不好意思
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-21 09:11 , Processed in 0.158684 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表