乐筑天下

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

[编程交流] 穿过a b的修剪线

[复制链接]

23

主题

75

帖子

58

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
143
发表于 2022-7-5 20:05:34 | 显示全部楼层 |阅读模式
我通过lisp例程替换了一系列块。但新街区比旧街区宽。因此,我编写了下面的例程来修剪延伸到块中的线。当块水平时,它间歇性工作。我还没有添加代码来修剪垂直的线条,因为我不明白为什么代码不能始终工作。代码如下,所附的图形文件中有我正在使用的块作为示例。
 
  1. (defun trimblocklines ( ent / e d ins ero bw bh pt1 pt2 ss1 cnt sslen )
  2. (setvar "cmdecho" 0)
  3. (setq e ent
  4.         d (entget e)
  5.         ins (cdr (assoc 10 d))
  6.         ero (* (dxf 50 d) (/ 180 pi))
  7.         bw 0.25
  8.         bh 0.125
  9.         pt1 (list (- (nth 0 ins) (/ bw 2)) (- (nth 1 ins) (/ bh 2)) (nth 2 ins))
  10.         pt2 (list (+ (nth 0 ins) (/ bw 2)) (+ (nth 1 ins) (/ bh 2)) (nth 2 ins))
  11.         ss1 (ssget "_C" pt1 pt2 '((0 . "line")))
  12.         cnt 0
  13.         sslen (sslength ss1)
  14.         ln_ents (list )
  15. )
  16. (command "circle" ins (list (+ (nth 0 ins) (/ bw 2)) (nth 1 ins)))
  17. (setq cent (entlast))
  18. (while (< cnt sslen)
  19.         (setq ln_ents (append ln_ents (list (ssname ss1 cnt)))
  20.                 cnt (1+ cnt)
  21.         )
  22. )
  23. (command "trim" cent ss1 "" (list (- (nth 0 ins) (- (/ bw 2) 0.01)) (nth 1 ins) 0.0) "")
  24. (command "trim" cent ss1 "" (list (+ (nth 0 ins) (- (/ bw 2) 0.01)) (nth 1 ins) 0.0) "")
  25. (entdel cent)
  26. (setvar "cmdecho" 0)
  27. (princ)
  28. )

 
修剪线条。图纸
 
非常感谢。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 20:15:52 | 显示全部楼层
试试饼干切割机。lsp它有很多选择,而不是试图让代码工作。
回复

使用道具 举报

6

主题

31

帖子

25

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-5 20:20:46 | 显示全部楼层
编辑Oops发布到错误的线程[emoji1]
回复

使用道具 举报

23

主题

75

帖子

58

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
143
发表于 2022-7-5 20:31:36 | 显示全部楼层
我认为extrim命令可以完成任务,但它是一个lisp,所以我不能使用它。
 
有没有办法使用vlisp使用extrim命令?
 
  1. (defun trimblocklines ( ent / e d ins ero bw bh pt1 pt2 ss1 cnt sslen )
  2. (setvar "cmdecho" 0)
  3. (setq e ent
  4. d (entget e)
  5. ins (cdr (assoc 10 d))
  6. ero (* (cdr (assoc 50 d))(/ 180 pi))
  7. bw 0.25
  8. bh 0.125
  9. pt1 (list (- (nth 0 ins) (/ bw 2)) (- (nth 1 ins) (/ bh 2)) (nth 2 ins))
  10. pt2 (list (+ (nth 0 ins) (/ bw 2)) (+ (nth 1 ins) (/ bh 2)) (nth 2 ins))
  11. ss1 (ssget "_C" pt1 pt2 '((0 . "line")))
  12. cnt 0
  13. sslen (sslength ss1)
  14. ln_ents (list )
  15. )
  16. (command "circle" ins (list (+ (nth 0 ins) (/ bw 2)) (nth 1 ins)))
  17. (setq cent (entlast))
  18. (while (< cnt sslen)
  19. (setq ln_ents (append ln_ents (list (ssname ss1 cnt)))
  20.   cnt (1+ cnt)
  21. )
  22. )
  23. (command "extrim" cent "" (list (- (nth 0 ins) (- (/ bw 2) 0.01)) (nth 1 ins) 0.0) "")
  24. (entdel cent)
  25. (setvar "cmdecho" 0)
  26. (princ)
  27. )

 
回复

使用道具 举报

23

主题

75

帖子

58

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
143
发表于 2022-7-5 20:35:22 | 显示全部楼层
看看我是否可以在这里修改这个例程,这是Marko Ribar的一个很棒的例程。我认为EXTRIM命令比TRIM命令工作得更好。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 20:42:03 | 显示全部楼层
当从LISP程序中评估TRIM命令时,它可能非常易变——我个人建议改用BREAK命令。
 
此外,您应该知道,任何活动对象捕捉都会影响提供给命令的点-因此,您应该暂时禁用对象捕捉,或者在提供点之前提交“非”或“无”命令修改器。
 
也许我的自动断块程序可以帮助你完成这项任务。
 
回复

使用道具 举报

23

主题

75

帖子

58

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
143
发表于 2022-7-5 20:47:46 | 显示全部楼层
 
 
李,你的“自动闭塞”程序太棒了。它可以满足我的所有需要。
 
我一直在努力用新的块替换我们的许多旧块。新街区更宽。我剩下的唯一代码就是断线。我将重写我的例程以使用break命令,并在输入点之前添加“_non”命令修饰符。
一旦我有了新代码,我就会发布它。
 
谢谢你的帮助!
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 20:55:56 | 显示全部楼层
您可以将extrim与lisp结合使用,不过在使用它时有点捉襟见肘。
  1. (load "Extrim")
  2. (etrim obj pt1) ; need to use etrim to pick cut obj and then a pt inside or out etc
回复

使用道具 举报

5

主题

14

帖子

10

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 20:59:32 | 显示全部楼层
李,你真聪明谢谢你的帮助
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 21:11:54 | 显示全部楼层
 
你太好了,贝格德-谢谢
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 09:06 , Processed in 0.518116 second(s), 83 queries .

© 2020-2025 乐筑天下

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