乐筑天下

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

[编程交流] 需要小俯卧撑

[复制链接]

41

主题

301

帖子

265

银币

后起之秀

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

铜币
209
发表于 2022-7-6 12:29:13 | 显示全部楼层
另一种可能的解决方案,我经常使用
 
  1. (defun c:UO nil(command "_.Ucs" "_Object" pause))
  2. (defun c:UU nil (command "_.Ucs" "_world"))
回复

使用道具 举报

8

主题

71

帖子

66

银币

初来乍到

Rank: 1

铜币
43
发表于 2022-7-6 12:33:15 | 显示全部楼层
谢谢大家
在你的支持下,我成功地创建了这个项目。但现在我面临一个奇怪的问题。我在Autocad 2008中运行了lisp,前三次它完全按照我希望的那样运行。我第四次运行它时,它会给我一条错误消息。
 
致命错误:命令嵌套深度不能超过4。
 
当我在Autocad 2010中运行相同的程序时,它运行得非常好,没有任何错误。谁能告诉我哪里出了问题。我知道这个Lisp程序还有很大的改进空间,但我只想知道这个Lisp程序出了什么问题。
 
我不太擅长lisps,但凭借我所知道的&这个网站的一点帮助,我完成了我的工作。
 
我在此附上代码,但如果您使用的是Autocad 2008或更低版本,请确保不要第四次使用它。
0SALD。LSP
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:36:33 | 显示全部楼层
我无法立即看到错误发生的地方,但我想提出几点建议:
 
[列表]
  • 使用“command”调用时,在命令前面加上“_”允许使用所有语言,并在重新定义命令时恢复到原始命令定义。看见
    http://www.cadforum.cz/cadforum_en/qaID.asp?tip=2425for更多信息。
    [/列表]
    [列表]
  • 尽可能避免使用“命令”调用-看看使用entmake函数-它更快、更可靠,给你更多的控制权(但不要太担心,因为你才刚刚开始,只是未来的一个提示)。
    [/列表]
  • 回复

    使用道具 举报

    26

    主题

    1495

    帖子

    20

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    118
    发表于 2022-7-6 12:39:55 | 显示全部楼层
    你能在(命令)调用中使用ALIGN吗?
     
    这是2000年的EXRXSUB-David
    回复

    使用道具 举报

    114

    主题

    1万

    帖子

    1万

    银币

    中流砥柱

    Rank: 25

    铜币
    543
    发表于 2022-7-6 12:43:33 | 显示全部楼层
    啊,真的-错过了!
     
    2010年的EXRXSUBR:wink:
    回复

    使用道具 举报

    32

    主题

    1166

    帖子

    1146

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    159
    发表于 2022-7-6 12:46:10 | 显示全部楼层
     
    Viv,
     
    我今天早上查看了代码,发现当我注释这行时
    故障不会发生。
     
    我猜想它在代码的这一部分的某个地方,如果它有帮助的话。
     
    1.   (while (or (not ss)
    2.             (> (sslength ss) 1))
    3.         (princ "\nSelect 1 Line To Work With:   ")
    4.         (setq ss (ssget (list (cons 0 "LINE")))))
    5. (setq en (ssname ss 0)         ; Entity Name
    6. ed (entget en)           ; Entity Definition
    7. p10 (cdr (assoc 10 ed))   ; 1st End Point
    8. p11 (cdr (assoc 11 ed))   ; 2nd End Point
    9. lan (angle p10 p11)       ; Angle In Radians
    10. lth (- (distance p10 p11) 50)
    11. nos (getint "\nENTER THE NUMBER OF SLOTS (2,3,4) : ")
    12. plen (getint "\nENTER THE LENGTH OF PLENUM : ")
    13. p1 (cdr (assoc 10 (entget en)))

     
    也许你应该仔细检查一下这个区域。我认为变量en是问题所在或与之相关的东西。
     
    无论如何,这是一个开始。
    回复

    使用道具 举报

    8

    主题

    71

    帖子

    66

    银币

    初来乍到

    Rank: 1

    铜币
    43
    发表于 2022-7-6 12:49:59 | 显示全部楼层
    谢谢David、Lee和Buzzard
    我同意你们所有人的意见。但是,同一个lisp如何在Autocad 2010中顺利工作??
     
    嗨Buzzard
    很高兴在很长时间后看到你的帖子。你怎么样?
    谢谢和问候
    维维安
    回复

    使用道具 举报

    32

    主题

    1166

    帖子

    1146

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    159
    发表于 2022-7-6 12:50:49 | 显示全部楼层
     
    嘿Viv,
     
    正如我提到的,我不太确定那里发生了什么。李在那方面会是一个更好的老师。同样,所有指标似乎都指向选择集的方向。
    为什么在旧版本上发生这种情况让我不知所措。
     
    就我自己而言,我染上了典型的季节性疾病,但并不严重。
     
    小心,祝你好运。
    回复

    使用道具 举报

    26

    主题

    1495

    帖子

    20

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    118
    发表于 2022-7-6 12:55:34 | 显示全部楼层
    您可以在设置模式等后尝试添加此项。它可以帮助调试:
     
    1. (defun debughelp ()
    2.   (setq *error* nil)
    3.   (setvar "CMDECHO" 1)
    4.   (trace c:lsd)
    5.   (vl-load-com)
    6.   (vl-bt))
    7. (debughelp)

     
    -大卫
    回复

    使用道具 举报

    114

    主题

    1万

    帖子

    1万

    银币

    中流砥柱

    Rank: 25

    铜币
    543
    发表于 2022-7-6 12:59:59 | 显示全部楼层
    维维安,
     
    很难从你的代码中看出你想要创建什么,但我会尽我所能帮助你。
     
    我会避免使用对齐和擦除,只在正确的位置创建必要的内容。
     
    我已经写了一个快速的“shell”,你可以围绕它来构建你的程序-这应该给你一个良好的基础,是没有错误的。
     
    我已经为您提供了一些子函数,这些子函数可以简化poyline的创建:
     
    1. (defun c:lsd (/ *error* [b][color=Blue]Make_Layer[/color][/b] [color=Red][b]Make_Polyline[/b][/color]
    2.                vl ov ss nos plen)
    3. (defun *error* (msg)
    4.    (and ov (mapcar 'setvar vl ov))
    5.    (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
    6.        (princ (strcat "\n** Error: " msg " **")))
    7.    (princ))
    8. [b][color=Blue]  (defun Make_Layer (lay col)
    9.    (or (tblsearch "LAYER" lay)
    10.        (command "_.-layer" "_M" lay "_C" col lay "")))[/color][/b]
    11. [color=Red][b]  (defun Make_Polyline (pts cls)
    12.    (entmakex (append (list (cons 0 "LWPOLYLINE")
    13.                            (cons 100 "AcDbEntity")
    14.                            (cons 100 "AcDbPolyline")
    15.                            (cons 90 (length pts))
    16.                            (cons 70 cls))
    17.                      (mapcar (function (lambda (x) (cons 10 x))) pts))))[/b][/color]
    18.                   
    19. (setq vl '("CLAYER" "CMDECHO" "OSMODE")
    20.        ov  (mapcar 'getvar vl))
    21. (if (and (setq ss   (ssget "_:S" '((0 . "LINE"))))
    22.           (setq nos  (getint "\nEnter Number of Slots: "))
    23.           (setq plen (getdist "\nEnter Length of Plenum: ")))
    24.    (progn
    25.      (mapcar 'Make_Layer '("GRILLE" "DUCTING") '(30 6))
    26.      (mapcar 'setvar (cdr vl) '(0 0 0))
    27.      
    28.                 [color=SeaGreen][b];< Draw Stuff Here>[/b][/color]
    29.      ) ; End Progn
    30.    ) ; End IF
    31. (mapcar 'setvar vl ov)
    32. (princ))

     
    请注意蓝色和红色显示的两个子函数。
     
    使用Make_layer sub,您可以为其提供层名称和颜色,它将为您创建层,如上图所示。
     
    使用Make_Polyline sub,可以为其提供点列表和位代码,以确定是要闭合多边形还是开放多边形(1或0)。
     
    例如:
     
    1. 10

     
    将返回通过1,2,0 3,10,0和5,6,0创建的闭合多段线的实体名称。
     
    我希望这有帮助,
     
    回复

    使用道具 举报

    发表回复

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

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

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

    GMT+8, 2025-3-5 10:08 , Processed in 0.361425 second(s), 71 queries .

    © 2020-2025 乐筑天下

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