乐筑天下

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

[编程交流] 帮助修改现有lisp

[复制链接]

18

主题

81

帖子

63

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 15:46:42 | 显示全部楼层 |阅读模式
大家好,
 
(抱歉,如果这是长的)我发现了一个Lisp程序,我认为它的工作方式本身绝对令人惊讶。我想知道是否有人能帮我修改一下。我试过了,但我的英语被电脑听不懂!
 
这是一个break-all-lisp(见下文),它最初是由李·麦克唐纳在2009年创建的。(非常感谢。)
我所说的一切都是二维的。
我想知道是否有一种方法可以修改它,使其具有特定的层(例如:冷水、热水等)可以给定一个值,以表示“只要a层和B层交叉,B层就会以特定的距离断开(我通常在线路的任一侧做3”),以表明B层比a层“低”
 
我知道2D没有高度。我正在做的项目有很多管道交叉,我希望能够加快速度。现在我一次只能做一个十字路口。下面是我使用的管道列表(我在这些()中放的只是希望管道是这样的,认为这可能有助于为其他管道提供价值。)
 
PNDCW(冷水)
PNDHW(热水)
PNHWR(热水回水)
PNDCW RO(RO水)
PNDCW ROR(再矿化反渗透水)
PNDCW RO-B(地板下的RO水)
PNDCW ROR-B(地板下的再矿化反渗透水)
PNGWB(油脂废料)
PNSNB(油脂废料)
PNVNT(通风)
VBF-管道(地板下方的通风口)
这是我开始用的Lisp程序。
 
 
 
  1. ;;; Break All, by Lee McDonnell.  25/07/2009
  2. (defun c:brkAll (/ *error* doc spc ss Objlst Obj iLst Altlst lst)
  3. (vl-load-com)
  4. (defun *error* (msg)
  5.    (if doc (vla-EndUndoMark doc))
  6.    (if ov (mapcar 'setvar vl ov))
  7.    (if (not
  8.          (wcmatch
  9.            (strcase msg) "*BREAK,*EXIT*,*CANCEL*"))
  10.      (princ
  11.        (strcat "\n** Error: " msg " **")))
  12.    (princ))
  13. (setq doc (vla-get-ActiveDocument
  14.              (vlax-get-Acad-Object))
  15.        spc (if (zerop (vla-get-activespace doc))
  16.              (if (= (vla-get-mspace doc) :vlax-true)
  17.                (vla-get-modelspace doc)
  18.                (vla-get-paperspace doc))
  19.              (vla-get-modelspace doc)))
  20. (setq vl '("CMDECHO" "OSMODE")
  21.        ov (mapcar 'getvar vl))
  22. (vla-StartUndoMark doc)
  23. (or *brk$dis* (setq *brk$dis* 5.))
  24. (if (setq ss (ssget '((0 . "*LINE,ARC"))))
  25.    (progn
  26.      (or (not
  27.            (setq tmp
  28.              (getdist
  29.                (strcat "\nSpecify Break Distance <" (rtos *brk$dis* 2 2) "> : "))))
  30.          (setq *brk$dis* tmp))
  31.      (setq Objlst
  32.        (mapcar 'vlax-ename->vla-object
  33.          (vl-remove-if 'listp
  34.            (mapcar 'cadr (ssnamex ss)))))
  35.      (while (setq Obj (car Objlst))
  36.        (foreach iObj (setq Objlst (cdr Objlst))
  37.          (setq iLst
  38.            (cons
  39.              (cons Obj
  40.                (vlax-list->3D-point
  41.                  (vlax-invoke Obj
  42.                    'IntersectWith iObj acExtendNone))) iLst))))
  43.      (mapcar 'setvar vl '(0 0))
  44.      (foreach Int (vl-remove-if-not
  45.                     (function
  46.                       (lambda (x)
  47.                         (vl-consp (cdr x)))) iLst)
  48.        (setq Obj (car Int))
  49.        (foreach Pt (cdr Int)
  50.          (and Altlst (setq lst Altlst))
  51.          (if (not (setq bDis (vlax-curve-getDistatPoint Obj Pt)))
  52.            (while (and (not bDis) lst)
  53.              (setq bDis (vlax-curve-getDistatPoint (setq Obj (car lst)) Pt)
  54.                    lst (cdr lst))))
  55.          (if bDis
  56.            (progn
  57.              (or (setq bPt1 (vlax-curve-getPointatDist Obj
  58.                               (+ bDis (/ *brk$dis* 2.))))
  59.                  (setq bPt1 (vlax-curve-getEndPoint Obj)))
  60.              (or (setq bPt2 (vlax-curve-getPointatDist Obj
  61.                               (- bDis (/ *brk$dis* 2.))))
  62.                  (setq bPt2 (vlax-curve-getStartPoint Obj)))
  63.              (command "_.Break"
  64.                (list (vlax-vla-object->ename Obj) pt) "_F" bPt1 bPt2)
  65.              (setq AltLst (cons (vlax-ename->vla-object (entlast)) AltLst)))))))
  66.    (princ "\n** Nothing Selected **"))
  67. (vla-EndUndoMark doc)
  68. (mapcar 'setvar vl ov)
  69. (princ))
  70.             
  71. (defun vlax-list->3D-point (lst)
  72. (if lst
  73.    (cons (list (car lst) (cadr lst) (caddr lst))
  74.          (vlax-list->3D-point (cdddr lst)))))

164645cba7qqhhzfz5utfh.png
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 15:54:57 | 显示全部楼层
你要么读这个。
或者你可以使用[C0DE][/C0DE]手动修改你的帖子(但使用O而不是0[zero],所以是“代码”)。
回复

使用道具 举报

18

主题

81

帖子

63

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 15:57:26 | 显示全部楼层
谢谢你的回复。虽然我学到了这一点点知识,但我对学习LISP还是那么陌生(就像刚学了两天),我仍然坐在这里茫然地瞪着眼睛。我知道我想做什么,我可以想象出来,但我的大脑无法让我的手指来执行。
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:04:14 | 显示全部楼层
 
一幅动画胜过千言万语
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 16:05:30 | 显示全部楼层
 
哇,他们应该把这个附加到代码发布指南线程中!
回复

使用道具 举报

18

主题

81

帖子

63

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 16:12:01 | 显示全部楼层
好吧,我在这里听起来真的很傻。但是我该怎么做呢?在工作电脑上我什么都不能下载?有什么想法吗?
 
但在那张照片中,我有三条线从北向南延伸。(热水、冷水和热水回流。)其他管道是反渗透水,我只想打破界限,让它一直保持不变。对不起,如果我把事情弄得更糟了,我只是想用我知道的唯一方式来解释。
回复

使用道具 举报

17

主题

1274

帖子

25

银币

后起之秀

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

铜币
260
发表于 2022-7-5 16:16:59 | 显示全部楼层
无需下载或安装。只需单击帖子底部的[编辑帖子],选择代码,然后单击工具栏上的#按钮来放置代码标签。你看了动画还是读了代码发布指南?
回复

使用道具 举报

18

主题

81

帖子

63

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 16:21:31 | 显示全部楼层
对不起,不,我没有阅读发帖指南,那是我的错。我对fourm的东西很陌生,所以这完全是我的错。我会回去编辑。
 
谢谢你为我指出这一点。我会在以后的帖子中记住这一点。
回复

使用道具 举报

17

主题

1274

帖子

25

银币

后起之秀

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

铜币
260
发表于 2022-7-5 16:26:35 | 显示全部楼层
更简单的是,只需添加一个链接,链接到李·麦克唐纳(李·麦克饰)的《代码全包》。
更简单,并提供了代码编写目的的历史记录。
回复

使用道具 举报

18

主题

81

帖子

63

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 16:30:44 | 显示全部楼层
谢谢你,就像我说的,我还在学习这个过程,所以很抱歉造成了一些问题。这根本不是我的意图。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 00:07 , Processed in 0.559544 second(s), 75 queries .

© 2020-2025 乐筑天下

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