乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 6|回复: 6

[编程交流] pline测量

[复制链接]

4

主题

14

帖子

10

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 23:49:20 | 显示全部楼层 |阅读模式
你好
我尝试创建简单的lisp例程,该例程允许从具有不同凸起的对象中获取长度,
所以我需要在图纸上画普林线,取它的长度,然后删除它
我编写了如下代码
 
  1. (defun pline_measure ( / en_pline)
  2. (command ".pline")
  3. (setq en_pline (entlast))
  4. (vlax-curve-getDistAtParam en (vlax-curve-getEndParam en_pline ))
  5. (setq lz (vlax-curve-getDistAtParam en (vlax-curve-getEndParam en_pline )))
  6. (entdel en_pline)
  7. )

 
但它表明该命令是在该函数结束时执行的
为什么?
我应该做什么来强制lisp等待其余的代码,直到我完成绘制pline?
回复

使用道具 举报

4

主题

194

帖子

192

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 00:08:45 | 显示全部楼层
尝试在“Pline”之后添加“Pause”。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 00:13:12 | 显示全部楼层

 
  1. (defun c:test (/ en_pline)
  2. (command "._pline")
  3. (while (> (getvar 'CMDACTIVE) 0) (command pause))
  4. (if (setq en_pline (entlast))
  5.    (progn (print (strcat "Length of Pline : < "
  6.                          (rtos (vlax-curve-getDistAtParam en_pline (vlax-curve-getEndParam en_pline)) 2)
  7.                          " > ."
  8.                  )
  9.           )
  10.           (entdel en_pline)
  11.    )
  12. )
  13. (princ)
  14. )
回复

使用道具 举报

4

主题

14

帖子

10

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 00:21:50 | 显示全部楼层
谢谢
它工作得很好
为大家庆祝圣诞节
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 00:33:02 | 显示全部楼层
 
不客气。
 
很乐意帮忙。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 00:42:36 | 显示全部楼层
我建议在以下内容中加入更多的错误捕捉:
  1. (defun c:pll ( / ent )
  2.    (setq ent (entlast))
  3.    (command "_.pline")
  4.    (if
  5.        (and
  6.            (while (= 1 (logand 1 (getvar 'cmdactive))) (vl-cmdf "\"))
  7.            (not (eq ent (setq ent (entlast))))
  8.        )
  9.        (progn
  10.            (princ (strcat "\nLength: " (rtos (vlax-curve-getdistatparam ent (vlax-curve-getendparam ent)))))
  11.            (entdel ent)
  12.        )
  13.    )
  14.    (princ)
  15. )
  16. (vl-load-com) (princ)

如果用户在PLINE命令处于活动状态时按ESC键(这将导致当前代码出错),或在指定两个顶点之前单击鼠标右键/按ENTER键(在这种情况下,当前程序将出错或删除上次创建的实体),则上述情况允许。
 
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 00:54:38 | 显示全部楼层
可以肯定的是,我对长度使用的一种更简单的方法是(vla get length ent)它的另一个参数,如图层线型co ords等。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-10 21:04 , Processed in 0.366736 second(s), 66 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表