明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4054|回复: 13

[LISP]怎样编写一个自动标注由多条pl线合并成一条pl线的长度的程序?

  [复制链接]
发表于 2006-1-18 09:15:00 | 显示全部楼层 |阅读模式
请教各位编程的老师们,自动标注只能实现标注一条pl线的长度,如果用pe命令将多条pl线进行连接为一整条,该怎样才能实现总体长度的标注?(小数要保留2位)
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2006-1-18 10:49:00 | 显示全部楼层

刚写出来的, 不难, 没有测试过, 看看

(defun c:test(/)
(setq entname1(car (entsel "选pl;" ))
      entname2(car (entsel "选标注;" )))
(setq vlax-entname2(vlax-ename->vla-object entname2)
      dxf-entname2(entget entname2)
      len (vla-get-length (vlax-ename->vla-object entname1))
      dxf-entname2(subst(cons 1 (rtos len 2 2))(assoc 1 dxf-entname2)dxf-entname2))
(entmod dxf-entname2)
  (princ "\n完成:"))

 楼主| 发表于 2006-1-18 12:54:00 | 显示全部楼层

提示错误

no function definition: VLAX-ENAME->VLA-OBJECT

 楼主| 发表于 2006-1-18 20:31:00 | 显示全部楼层
敬请高手们明示!!!!!!
发表于 2006-1-19 08:28:00 | 显示全部楼层

在程序前先加一句

(VL-LOAD-COM)

可能你用的是2000版的CAD 或是在安装时没有完全安装

 楼主| 发表于 2006-1-19 10:52:00 | 显示全部楼层

还是不行。会有如下提示:

命令:test

选pl;选标注;;错误:参数类型错误:lentityp nil

命令:

发表于 2006-1-19 11:27:00 | 显示全部楼层

那要换原始一点的写法了

(defun c:test(/ DXF-ENTNAME2 ENTNAME1 ENTNAME2 LEN)
(setq entname1(car (entsel "\n选pl;" ))
      entname2(car (entsel "选标注;" )))
  (command "lengthen" entname1 "")
(setq dxf-entname2(entget entname2)
      len (getvar "perimeter")
      dxf-entname2(subst(cons 1 (rtos len 2 2))(assoc 1 dxf-entname2)dxf-entname2))
(entmod dxf-entname2)
  (princ "\n完成:")
  (princ))

 楼主| 发表于 2006-1-19 16:25:00 | 显示全部楼层

那么怎样才能将长度标注在图形中?眼下的程序只能将长度显示在命令行中!!!!

发表于 2006-1-20 09:46:00 | 显示全部楼层
或许改用text
发表于 2006-1-20 11:27:00 | 显示全部楼层

还是不行,显示:参数类型错误: numberp: nil

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-31 18:26 , Processed in 0.237052 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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