乐筑天下

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

[编程交流] 偏移Lisp

[复制链接]

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 09:54:24 | 显示全部楼层 |阅读模式
大家好,
 
我正在尝试编写一个lisp,让用户沿着路径绘制一条线,然后将线向每侧偏移3“,更改两条新线的层并删除原始线。我遇到的问题是使线偏移。我认为使线向每侧偏移的最简单方法是获得extmin和extmax,但这似乎不起作用。
 
有没有人有其他建议,或者我的代码中有错误?
 
(defun C:热迹()
(setq ext1(getvar“extmin”))
(setq ext2(getvar“extmax”))
(命令“pline”)
(while(>(getvar“CMDACTIVE”)0)(命令暂停)
(setq entity1(entget(entlast)))
(命令“OFFSET”e n 3 entity1 ext1“”)
(命令“CHANGE”l“p la”p-HEATTRACE“”)
(命令“OFFSET”e y 3 entity1 ext2)
(命令“CHANGE”l“p la”p-HEATTRACE“”)
(命令“擦除”实体1)
(普林斯)
)
 
非常感谢。
回复

使用道具 举报

10

主题

8258

帖子

8335

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-6 10:11:46 | 显示全部楼层
也许,如果您查看一些以前编写的lisp例程,这些例程提供了类似的函数,那么您就会发现实现这一点的方法。首先检查下面的类似螺纹。如果这不适合您,请使用上面的搜索选项和单词“offset”。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:25:55 | 显示全部楼层
您可以绘制PLine,然后使用它:
 
http://lee-mac.com/doubleoffset.html
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:31:57 | 显示全部楼层
或者,考虑以下代码:
 
  1. (defun c:test ( / layer doc eLast ent obj ) (vl-load-com)
  2. ;; Example by Lee Mac 2011  -  www.lee-mac.com
  3. (setq layer  "P-HEATTRACE"
  4.        doc    (vla-get-ActiveDocument (vlax-get-acad-object))
  5. )
  6. (if (not (tblsearch "LAYER" layer)) (vla-Add (vla-get-Layers doc) layer))
  7. (setq eLast (entlast))
  8. (command "_.pline")
  9. (while (= 1 (logand 1 (getvar 'CMDACTIVE))) (command pause))
  10. (if
  11.    (and
  12.      (not (equal eLast (setq ent (entlast))))
  13.      (setq obj (vlax-ename->vla-object ent))
  14.      (vl-every
  15.        (function
  16.          (lambda ( d / l )
  17.            (if
  18.              (not
  19.                (vl-catch-all-error-p
  20.                  (setq l
  21.                    (vl-catch-all-apply 'vlax-invoke (list obj 'Offset d))
  22.                  )
  23.                )
  24.              )
  25.              (mapcar '(lambda ( o ) (vla-put-Layer o layer)) l)
  26.            )
  27.          )
  28.        )
  29.        (list 3.0 -3.0)
  30.      )
  31.    )
  32.    (entdel ent)
  33. )
  34. (princ)
  35. )
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:42:59 | 显示全部楼层
http://www.cadtutor.net/forum/showthread.php?52810-查找LISP-routine-Multiple-Polyline-Offset
回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 10:57:48 | 显示全部楼层
谢谢你们的帮助,伙计们。
 
李,我在发帖前四处搜索时遇到了你的doubleoffset。我的问题是我对视觉了解不够,无法编辑它。
 
您发布的测试示例正是我想要实现的。我想我需要学习视觉lisp。它看起来比autolisp强大一点。
 
再次感谢!
(仍不确定为什么无法使用autolisp调用偏移方向的变量…)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 23:57 , Processed in 0.611568 second(s), 64 queries .

© 2020-2025 乐筑天下

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