乐筑天下

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

[编程交流] 将矩形偏移为单独的

[复制链接]

0

主题

7

帖子

7

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 08:48:56 | 显示全部楼层
不客气。
 
当我发布代码时,我确实注意到了一些我错过的事情。
 
第一件事是更新此行:
  1. (vl-cmdf "explode" (entlast) [color=red]""[/color])

 
你不需要在行尾加引号。只需删除它们。如果这对你不起作用,请告诉我。
 
你可以做的另一件事是在局部变量中添加*error*
  1. (/ [color=red]*error*[/color] CurLayer OffsetDist VlaObj sset num Ang Ptdist StartPt EndPt)

 
否则我希望这对你有用。
回复

使用道具 举报

1

主题

96

帖子

101

银币

初来乍到

Rank: 1

铜币
3
发表于 2022-7-6 08:51:11 | 显示全部楼层
可能想阅读代码发布指南jsowinski
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-6 08:54:57 | 显示全部楼层
代码发布指南
回复

使用道具 举报

0

主题

7

帖子

7

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 08:57:54 | 显示全部楼层
谢谢你让我知道。
回复

使用道具 举报

39

主题

180

帖子

141

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
195
发表于 2022-7-6 08:59:58 | 显示全部楼层
我唯一想知道的是,我们能在矩形偏移后分解它吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:04:00 | 显示全部楼层
快速一:
 
  1. (defun c:MyOffset ( / ent obj )
  2.    (if
  3.        (setq *dist*
  4.            (cond
  5.                (   (getdist
  6.                        (strcat "\nSpecify Offset Distance"
  7.                            (if *dist* (strcat " <" (rtos *dist*) ">: ") ": ")
  8.                        )
  9.                    )
  10.                )
  11.                (   *dist*   )
  12.            )
  13.        )
  14.        (while
  15.            (progn (setvar 'ERRNO 0) (setq ent (car (entsel "\nSelect LWPolyline: ")))
  16.                (cond
  17.                    (   (= 7 (getvar 'ERRNO))
  18.                        (princ "\nMissed, try again.")
  19.                    )
  20.                    (   (eq 'ENAME (type ent))
  21.                        (cond
  22.                            (   (= 4 (logand 4 (cdr (assoc 70 (tblsearch "LAYER" (cdr (assoc 8 (entget ent))))))))
  23.                                (princ "\nObject is on Locked Layer.")
  24.                            )
  25.                            (   (eq "LWPOLYLINE" (cdr (assoc 0 (entget ent))))
  26.                                (foreach obj (vlax-invoke (setq obj (vlax-ename->vla-object ent)) 'explode)
  27.                                    (vla-offset obj *dist*)
  28.                                )
  29.                                (vla-delete obj)
  30.                                t
  31.                            )
  32.                            (   (princ "\nObject is not an LWPolyline.")   )
  33.                        )
  34.                    )
  35.                )
  36.            )
  37.        )
  38.    )
  39.    (princ)
  40. )
  41. (vl-load-com) (princ)
回复

使用道具 举报

39

主题

180

帖子

141

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
195
发表于 2022-7-6 09:07:31 | 显示全部楼层
谢谢,李
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:09:39 | 显示全部楼层
不用担心,它应该适用于所有LWD多段线,即使是具有圆弧段的多段线。
回复

使用道具 举报

39

主题

180

帖子

141

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
195
发表于 2022-7-6 09:13:20 | 显示全部楼层
我需要一些帮助,这个例程是由jsowinski编写的,我添加了一条线来更改矩形层并将其分解,但它会将原始矩形保留在新线下。我需要分解原始矩形。任何帮助都将不胜感激。
 
  1. (defun c:Offsetpline (/ *error* OffsetDist VlaObj sset num Ang Ptdist StartPt EndPt)
  2. (vl-load-com)
  3. (defun *error* (msg)
  4. (princ)
  5. ); _end defun
  6. (setq OffsetDist (getreal "\nEnter an offset distance: "))
  7. (while (setq VlaObj (vlax-ename->vla-object (car (entsel "Select a Rectangle: "))))
  8. (setq Startpt (vlax-curve-getPointAtParam VlaObj 1))
  9. (setq Ang (+ (angle (vlax-curve-getStartPoint VlaObj)(vlax-curve-getPointAtParam VlaObj 1))(* (/ pi 180) 90)))
  10. (setq PtDist (distance Startpt (vlax-curve-getPointAtParam VlaObj 2)))
  11. (vlax-put-property vlaobj 'layer "Router - Green-V groove")
  12. (vl-catch-all-apply 'vlax-invoke-method (list VlaObj 'explode))
  13. (if (equal (polar Startpt Ang PtDist)(vlax-curve-getPointAtParam VlaObj 2) 1.0)
  14. (vl-catch-all-apply 'vlax-invoke-method (list VlaObj 'Offset OffsetDist))
  15. (vl-catch-all-apply 'vlax-invoke-method (list VlaObj 'Offset (- OffsetDist)))
  16. ); _end if
  17. (setq VlaObj (vlax-ename->vla-object (entlast)))
  18. (vl-catch-all-apply 'vlax-put (list VlaObj 'Layer "Router - Blue - Cuts"))
  19. (vl-cmdf "explode" (entlast))
  20. (setq sset (ssget "_P"))
  21. (setq num -1)
  22. (repeat (sslength sset)
  23. (setq VlaObj (vlax-ename->vla-object (ssname sset (setq num (1+ num)))))
  24. (setq StartPt (polar (vlax-get VlaObj 'StartPoint)(vlax-get VlaObj 'Angle) OffsetDist))
  25. (vl-catch-all-apply 'vlax-put (list VlaObj 'StartPoint StartPt))
  26. (setq EndPt (polar (vlax-get VlaObj 'EndPoint)(- (vlax-get VlaObj 'Angle) pi) OffsetDist))
  27. (vl-catch-all-apply 'vlax-put (list VlaObj 'EndPoint EndPt))
  28. ); _end repeat
  29. ); _end while
  30. (princ)
  31. ); _end defun  
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:17:22 | 显示全部楼层
http://www.cadtutor.net/forum/showthread.php?66513-将矩形偏移为单独的线&p=455332&viewfull=1#post455332
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 08:52 , Processed in 0.777981 second(s), 70 queries .

© 2020-2025 乐筑天下

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