乐筑天下

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

[编程交流] 偏移命令w需要Lisp

[复制链接]

7

主题

29

帖子

22

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 16:04:36 | 显示全部楼层 |阅读模式
有人能帮我吗?我需要lisp的两层变化与使用偏移命令。请看我下面的草图。。。这里有两层,即混凝土层和保护层。现在,当前层是混凝土层,我需要将50mm偏移到带有覆盖层的内部矩形(不需要手动更改层属性),但在完成偏移命令后,当前层应更改为旧层,即混凝土层。请帮帮我。。
 
[ATTACH=CONFIG]30228[ATTACH]
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 16:10:40 | 显示全部楼层

 
  1. (defun c:test (/ n ss p e)
  2. ;; Tharwat 27. Sep. 2011 ;;
  3. (if
  4.    (and (setq n (getdist "\n Specify the Offset Distance :"))
  5.         (setq
  6.           ss (ssget "_+.:S:L" '((0 . "*POLYLINE,*LINE,CIRCLE,ELLIPSE")))
  7.         )
  8.         (setq p (getpoint "\n Specify point :"))
  9.    )
  10.     (progn
  11.       (command "_.offset" n ss "_non" p "")
  12.       (setq e (entlast))
  13.       (if (tblsearch "LAYER" "cover")
  14.         (command "_.chprop" e "" "_layer" "cover" "")
  15.       )
  16.     )
  17.     (princ)
  18. )
  19. (princ)
  20. )

 
塔瓦特
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-5 16:17:02 | 显示全部楼层
  1. (defun c:test ( / ss->lst pairpts revpl coverlayer concretelayer dist ss )
  2. (vl-load-com)
  3. (setq coverlayer "defpoints")
  4. (setq concretelayer "0")
  5. (defun ss->lst ( ss flag / id lst )
  6.    (if (eq 'PICKSET (type ss))
  7.      (repeat (setq id (sslength ss))
  8.        (
  9.          (lambda ( name )
  10.            (setq lst
  11.              (cons
  12.                (if flag (vlax-ename->vla-object name)
  13.                  name
  14.                )lst
  15.              )
  16.            )
  17.          )(ssname ss (setq id (1- id)))
  18.        )
  19.      )
  20.    )
  21. )
  22. (defun pairpts ( _list / l pt )
  23.    (foreach x (reverse _list)
  24.      (if pt
  25.        (setq l (cons (cons x pt) l) pt nil)
  26.        (setq pt (cons x pt))
  27.      )
  28.    ) l
  29. )
  30. (defun revpl ( vla-obj / catch openpl )
  31.    (and (eq :vlax-false (setq openpl (vla-get-closed vla-obj)))
  32.      (vla-put-closed vla-obj :vlax-true)
  33.    )
  34.    (setq catch
  35.      (vl-catch-all-apply (function vlax-invoke)
  36.        (list vla-obj
  37.          'offset (vla-get-length vla-obj)
  38.        )
  39.      )
  40.    )
  41.    (and (eq :vlax-false openpl)
  42.      (vla-put-closed vla-obj :vlax-false)
  43.    )
  44.    (if (vl-catch-all-error-p catch)
  45.      (vlax-put vla-obj 'coordinates
  46.        (apply (function append)
  47.          (reverse
  48.            (pairpts (vlax-get vla-obj 'coordinates))
  49.          )
  50.        )
  51.      ) (and catch (vla-delete (car catch)))
  52.    )
  53.    vla-obj
  54. )
  55. (if (and (setq dist (getdist "\nSpecify distance to offset: "))
  56.    (setq ss (ss->lst (ssget '((0 . "lwpolyline"))) t)))
  57.    (foreach x ss
  58.      (vla-put-layer x coverlayer)
  59.      (vla-put-layer
  60.        (car
  61.          (vlax-invoke (revpl x)
  62.            'offset dist
  63.          )
  64.        ) concretelayer
  65.      )
  66.    )
  67. ) (princ)
  68. )
回复

使用道具 举报

7

主题

29

帖子

22

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 16:18:59 | 显示全部楼层
谢谢你的朋友。。。
回复

使用道具 举报

7

主题

29

帖子

22

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 16:22:53 | 显示全部楼层
谢谢朋友
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 16:28:40 | 显示全部楼层
这很好:拇指支撑:
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 16:32:26 | 显示全部楼层
我想知道那个朋友是谁!!
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:37:07 | 显示全部楼层
这可能有助于添加到Tharwats代码中
 
http://www.cadtutor.net/forum/showthread.php?62893-LISP-for-a-rectangle-inside-a-rectangle
 
两者的结合?
回复

使用道具 举报

22

主题

78

帖子

59

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
114
发表于 2022-7-5 16:42:37 | 显示全部楼层
对于需要偏移的选定对象集,如何将偏移量预设为3’-0”,并将线型更改为DASHDOT,而不是更改新偏移线的图层?
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:44:41 | 显示全部楼层
K Baden从上面看一下这些代码,它有你想要的所有答案,是时候试试你的lisp技能了。
 
  1. (setq dist
  2. (vla-put-layer look at 2nd one
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 21:32 , Processed in 1.518651 second(s), 72 queries .

© 2020-2025 乐筑天下

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