乐筑天下

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

[编程交流] 拾取时拾取点

[复制链接]

30

主题

96

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
150
发表于 2022-7-6 08:51:58 | 显示全部楼层 |阅读模式
有人能告诉我我做错了什么吗?
此例程用于在指定的方向上使用不同的偏移值重复偏移拾取的图元。前4-5个偏移是可以的。但它抵消了一个错误的实体。。。
 
  1. (defun c:QO( / PickedEnt pt0 Ent OSM
  2.       OffsetTowards Ang i pt2 OffsetVal)
  3. (setq PickedEnt (entsel "\nPick Ent:"))
  4. (setq pt0 (cadr PickedEnt))
  5. (setq Ent (car PickedEnt))
  6. (setq OSM (getvar "OSMODE"))
  7. (setvar "osmode" 0)
  8. (setq OffsetTowards (getpoint pt0 "\nPick direction to offset:"))
  9. (setq Ang (angle pt0 OffsetTowards))
  10. (setq i 1)
  11. (While (> i 0)
  12.    (setq pt2 (polar pt0 ang 100000000))
  13.    (setq OffsetVal (getreal "\nOffset Distance:"))
  14.    (command "_Offset" OffsetVal Ent pt2 "")
  15.    (setq Ent (entlast))
  16.    (setq pt0 pt2)
  17.    (setq i (1+ i))
  18. )
  19. )
  20. (defun *error* (errmsg)
  21. (princ errmsg)
  22. (princ)
  23. (if (not (eq OSM nil))(setvar "OSMODE" OSM))
  24. )
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 09:05:43 | 显示全部楼层
(setq pt2(极性pt0和100000000))
 
我建议您使用选定的第一个实体作为每个偏移的基础,并记录您输入的每个距离,为OffsetVal变量添加总值+新值,这样,方向仍将来自原始实体,无需重新分配pt2的值,只需将偏移距离增加总值+新值,无需使用entlast
 
一个简单的代码应该是这样的
 
  1. (defun c:test (/ PickedEnt pt0 i)
  2. (setq PickedEnt (entsel "\nPick Ent:"))
  3. (setq pt0 (cadr PickedEnt))
  4. (setq pt0 ( getpoint  pt0 "\nPick direction to offset:"))
  5. (setq i 0)
  6. [color=blue](while
  7. (setq OffsetVal (getreal "\nOffset Distance:"))
  8. (setq OffsetVal (+ i OffsetVal))
  9.     (command "_Offset" OffsetVal PickedEnt pt0 "")
  10.     (setq i OffsetVal)
  11.    )
  12. [/color](princ)
  13. )

 
HTH公司
回复

使用道具 举报

30

主题

96

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
150
发表于 2022-7-6 09:15:21 | 显示全部楼层
谢谢pBe,我会试试的。。!!
回复

使用道具 举报

30

主题

96

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
150
发表于 2022-7-6 09:29:23 | 显示全部楼层
我在你建议pBe时修改了它,
不,它很好用。。。给你。。
 
  1. (defun c:QO( / PickedEnt pt0 Ent OSM
  2.       OffsetTowards Ang i pt2 OffsetVal)
  3. (setq PickedEnt (entsel "\nPick Ent:"))
  4. (setq pt0 (cadr PickedEnt))
  5. (setq Ent (car PickedEnt))
  6. (setq OSM (getvar "OSMODE"))
  7. (setvar "osmode" 0)
  8. (setq OffsetTowards (getpoint pt0 "\nPick direction to offset:"))
  9. (setq Ang (angle pt0 OffsetTowards))
  10. (setq OffsetVal 0)
  11. (setq i 1)
  12. (While (> i 0)
  13.    (setq OffsetVal (+ OffsetVal (getreal "\nOffset Distance:")))
  14.    (setq pt2 (polar pt0 ang OffsetVal))
  15.    (command "_Offset" OffsetVal Ent pt2 "")
  16.    (setq i (1+ i))
  17. )
  18. )
  19. (defun *error* (errmsg)
  20. (princ errmsg)
  21. (princ)
  22. (if (not (eq OSM nil))(setvar "OSMODE" OSM))
  23. )
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 09:38:13 | 显示全部楼层
看看我发布的harilalmn示例代码
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:45:45 | 显示全部楼层
另一种选择:
 
  1. Command: EXOFFSET
  2. Settings: Distance = Through,  Layer = SOURCE, Gaptype = Normal
  3. Specify offset distance or [[color=red]Through[/color]] <Through>:
  4. Select object(s) to offset or [Options/Undo]:
  5. 1 object(s) found.
  6. [color=red]Shift+Pick for multiple;[/color] Ctrl+Pick to erase source object.
  7. Specify through point or [[color=red]Multiple[/color]/Options/Undo]:
回复

使用道具 举报

30

主题

96

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
150
发表于 2022-7-6 09:53:01 | 显示全部楼层
谢谢李。。。。!!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 06:26 , Processed in 0.550726 second(s), 66 queries .

© 2020-2025 乐筑天下

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