乐筑天下

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

[编程交流] 简单lisp例程帮助-Mea

[复制链接]

2

主题

5

帖子

3

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 06:22:16 | 显示全部楼层 |阅读模式
大家好。
 
我试着为一个重复的过程组装一个autolisp,这个过程将给我们的办公室带来麻烦,但在这个阶段我只是不知道如何让它工作。
 
我们基本上需要使用“measure”命令在(许多)多条多段线上每隔20m插入一个块。
 
有人能建议或给出这样做的示例代码吗?
 
基本上选择measure命令,允许我选择多段线(或者选择多条多段线,那会更好!),选择块选项,输入块名称(现在称为Block1),确认Y与多段线对齐,然后自动指定20m间隔。
 
感谢您的帮助!
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 06:27:51 | 显示全部楼层
看看这个,伙计。
 
  1. (defun c:TesT (/ blk ss l name)
  2. ; TharwaT 04. 04. 2011
  3. (if
  4.    (and (setq blk (entsel "\n Select Block :"))
  5.         (setq ss (ssget "_:L" '((0 . "LINE,SPLINE,LWPOLYLINE,POLYLINE"))))
  6.         (setq l (getdist "\n Distance between Blocks :"))
  7.    )
  8.     (progn
  9.       (setq name (cdr (assoc 2 (entget (car blk)))))
  10.       ((lambda (i / ss1)
  11.          (while
  12.            (setq ss1 (ssname ss (setq i (1+ i))))
  13.             (command "_.measure" ss1 "Block" name "_Y" l)
  14.          )
  15.        )
  16.         -1
  17.       )
  18.     )
  19.     (princ)
  20. )
  21. (princ)
  22. )

 
塔瓦特
回复

使用道具 举报

2

主题

5

帖子

3

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 06:29:21 | 显示全部楼层
完美的非常感谢
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 06:34:44 | 显示全部楼层
不客气,凯尔森。
 
塔瓦特
回复

使用道具 举报

6

主题

249

帖子

247

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 06:35:46 | 显示全部楼层
 
这太棒了!如何进行修改以在插入选定块时更改其比例?
谢谢Steveo
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 06:39:09 | 显示全部楼层
 
非常感谢。
 
我猜你不能缩放将沿所选线分布的块,因为命令度量将
按块的名称而不是选定对象插入块。
 
也许有人会对这个事实提出异议。
 
塔瓦特
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 06:42:17 | 显示全部楼层
在测量每个对象之前,您需要使用vlax curve getPointAtDist(请参阅我的CopyAlongCurve.LSP)滚动自己的对象,或存储最后一个实体(entlast),然后在测量完曲线后,使用entnext选择每个新创建的对象(块)并根据最初选择的块的比例特性重新缩放。
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 06:47:36 | 显示全部楼层
史蒂夫
试试这个稍微编辑过的代码
  1. (defun c:TesT2 (/ blk ss l name)
  2. ; TharwaT 04. 04. 2011
  3. (if
  4. (and (setq blk (entsel "\n Select Block :"))
  5. (setq ss (ssget "_:L" '((0 . "LINE,SPLINE,LWPOLYLINE,POLYLINE"))))
  6. (setq l (getdist "\n Distance between Blocks :"))
  7. (setq scl (getdist "\n Enter a scale :"))   
  8. )
  9. (progn
  10. (setq name (cdr (assoc 2 (entget (car blk)))))
  11. ((lambda (i / ss1)
  12. (while
  13. (setq ss1 (ssname ss (setq i (1+ i))))
  14. (setq marker(entlast))
  15. (command "_.measure" ss1 "Block" name "_Y" l)
  16. (while (setq en (entnext marker))
  17. (setq elist (entget en)
  18. pt (cdr (assoc 10 elist)))
  19. (command "_scale" en "" "_non" pt scl)
  20. (princ (cdr (assoc 2 elist)))
  21. (entupd en)
  22. (setq marker en)
  23. )
  24. )
  25. )
  26. -1
  27. )
  28. )
  29. (princ)
  30. )
  31. (princ)
  32. )

 
~'J'~
回复

使用道具 举报

6

主题

249

帖子

247

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 06:50:50 | 显示全部楼层
 
fixo!!!你做到了!!谢谢,史蒂夫
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 06:51:44 | 显示全部楼层
史提夫,
不客气
但多亏了塔瓦
干杯,朋友
 
奥列格
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 17:56 , Processed in 0.833834 second(s), 72 queries .

© 2020-2025 乐筑天下

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