cjjh8301 发表于 2011-6-2 20:17:29

明币不多,意思下,2币求一小程序,前辈请进

要求程序可以实现自动将标注等分,比如预选一个线性标注、对齐标注或弧长标注(假设为1000),命令后,输入要等分的量(假设为4),然后回车或空格,标注自动变为250*4=1000,如图:

Andyhon 发表于 2011-6-2 20:17:30

本帖最后由 Andyhon 于 2011-6-3 11:47 编辑

;;; for test only


(vl-load-com)
(defun c:test ()
   (cond
    ((null (setq ss (ssget '((0 . "DIMENSION"))))))
    (T
   (setVar 'DimZin 8)
   (setVar 'Luprec 1)         ; 此处设定小数精度
   (setq ee (ssname ss 0)
          obj (vlax-ename->vla-object ee)
          txt (vla-get-measurement obj)
          div (getint "\n输入要等分的量: ")
         dtxt (rtos (/ txt div))
   )
   
   (vla-put-TextOverRide
       obj
       (strcat (itoa div) "*" dtxt "=" (rtos txt))
   )
   ))
)

先写个雏型,请自行调试再回馈需修订之处

Andyhon 发表于 2011-6-3 07:57:04

...线性标注、对齐标注或弧长标注(假设为1000)...
请 Upload *.dwg 包含以上示例

(假设为1000 / 937 ).....
(3 * 333 ~ 1000 ~)????
若不整除时咋办?

cjjh8301 发表于 2011-6-3 09:05:55

本帖最后由 cjjh8301 于 2011-6-3 09:08 编辑

上面的图就是一个正常标注一个标了文字内容
4 舍 5 入可以不?

cjjh8301 发表于 2011-6-3 10:12:03

基本可以实现,但是等分后 文字内容少了“=" 与结果,只是a*n,最好是a*n=m,
还有逢0.5就保留不要4 舍 5 入

Andyhon 发表于 2011-6-3 10:24:52

4#己修订,请再测 ......

cjjh8301 发表于 2011-6-3 10:46:40

不行了1000的标注执行命令后 标注变成 4*=250

仲文玉 发表于 2011-6-3 10:49:30

2007中测试结果同上

仲文玉 发表于 2011-6-3 11:00:56

本帖最后由 仲文玉 于 2011-6-3 11:02 编辑

(strcat (itoa div) "*=" dtxt)
(strcat (itoa div) "*" dtxt "=" 原txt的值)

Andyhon 发表于 2011-6-3 11:03:33

Sorry! 己订正
页: [1] 2
查看完整版本: 明币不多,意思下,2币求一小程序,前辈请进