乐筑天下

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

[编程交流] Revision标记和云例程

[复制链接]

21

主题

52

帖子

31

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2022-7-6 09:45:29 | 显示全部楼层 |阅读模式
我正在尝试创建lisp以:
[列表=1]
  • 询问我正在处理的修订号:(setq RN)对于这个示例,我将使用8
  • 取该值并将其用于为修订标记(PE\U Rev8-Delta)创建图层名称
  • 使用该层插入修订增量
  • 将该值用于增量块中的属性。
  • 使用RN值为修订云(PE_Rev8-cloud)创建层名称,并将其置为当前
  • 启动revcloud命令。
    [/列表]
     
    我知道的问题是:
    [列表]
  • 我不知道如何接受“RN”值并将其用作层名称创建的一部分。
  • 我不知道如何使插入比例因子(setq SF)成为dimscale(setq DS)时间的乘积。1(出于某种原因,我工作的公司将其所有块插入到dimscale的0.1处,似乎未来的任务应该是重新缩放主块…)
    下面是我代码的一部分,我用红色文本和*s突出显示了我的问题区域。如果你看到其他我应该想到的东西,请告诉我。
    感谢您的帮助和投入!
     
    1. (defun c:PE_rev ()
    2. (setq oldlayer (getvar "clayer"))
    3. (setvar "cmdecho" 0)
    4. ;            create revision tag layer then insert tag
    5. ;Get Revision number
    6. (SETQ RN (GETREAL "Revision number"))
    7. ;[b][color=Red]**Problem 1**[/color][/b]    (COMMAND "_.LAYER" "M" "PE_Rev[b][color=Red]8[/color][/b]-Delta" "C" "40" "PE_Rev[color=Red][b]8[/b][/color][b][color=Red][/color][/b]-Delta" "S" "PE_Rev[b][color=Red]8[/color][/b]-Delta" "")
    8.                (SETQ DS (GETVAR "DIMSCALE"))
    9. ;[color=Red][b]**Problem 2**[/b][/color]                (SETQ SF ([b][color=Red]***[/color][/b]))
    10.                    (TERPRI)
    11.                (SETQ PT (GETPOINT "SELECT INSERTION POINT:"))
    12.                    (TERPRI)
    13. ;                (SETQ RA (GETPOINT "0"))
    14. ;
    15. ;    EY_Rev is the revision tag symbol located at H:\Eng\a_blocks\Symbols;
    16. ;
    17.    (COMMAND "-INSERT" "EY_REV" "S" PT SF "" "" RN "" "0"))
  • 回复

    使用道具 举报

    4

    主题

    940

    帖子

    961

    银币

    初来乍到

    Rank: 1

    铜币
    12
    发表于 2022-7-6 09:56:20 | 显示全部楼层
    1.(setq LN(strcat“PE_Rev”(rtos RN)“-Delta”);使用LN作为层名称;如果使用(rtos RN 2 0),它将返回一个整数,(rtos RN 2 1)将返回1个小数点。
    2.(setq SF(*DS 0.1));SF将是dimscale的0.1倍,可以缩短为(*(getvar“dimscale”)0.1)
     
    我没有用这些测试你的代码,但我认为应该可以
    回复

    使用道具 举报

    21

    主题

    52

    帖子

    31

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    105
    发表于 2022-7-6 10:09:05 | 显示全部楼层
    好的,我做了一些修改,以遵循我认为你说的,但我现在得到了一些其他问题。
     
    [列表]
  • 当我对修订号问题回答24时,图层名为“PE_Rev2”-delta,delta中的数字为24.00000000000000
  • 有没有办法抑制我的标签中的小数点和14个0?
    当我为rev#输入7时,我得到:
    命令:pe\U rev
    输入修订号:7
     
    -图层
    当前图层:“PE_外部参照”
    输入选项
    [?/Make/Set/New/ON/OFF/Color/Ltype/LWeight/MATerial/Plot/Freeze/Thaw/LOck/Unlock
    /状态]:M
    输入新层的名称(成为当前层):
    PE_Rev7.0000“-Delta
    层名称无效。
    ; 错误:功能已取消
     
     
    这是我的更新代码:
     
    1. (defun c:PE_rev ()
    2. (setq oldlayer (getvar "clayer"))
    3. (setvar "cmdecho" 1)
    4. ;            create revision tag layer then insert tag portion;;;;;;;;;;;;;;;;;;
    5. ;Get Revision number
    6.        (SETQ RN (GETREAL "Enter Revision number: "))
    7.        (Setq LND (strcat "PE_Rev"(rtos RN)"-Delta"))
    8. ;                         if you use (rtos RN 2 0) it will return an integer, (rtos RN 2 1)
    9.        (SETQ SF (* (getvar "dimscale") 0.1))
    10.        `    (TERPRI)
    11.    (COMMAND "-LAYER" "M" LND "C" "40" LND "S" LND "")
    12.        (SETQ PT (GETPOINT "SELECT INSERTION POINT:"))
    13.            (TERPRI)
    14. ;
    15. ;                        EY_Rev is the revision tag symbol located at H:\Eng\a_blocks\Symbols;
    16.    (COMMAND "-INSERT" "H:\\Eng\\a_blocks\\Symbols\\EY_REV" PT SF "" "" RN)
    17. ;
    18. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Revision cloud portion;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    19. ;            create revision layer then cloud
    20. ;        (if (null (tblsearch "layer" "PE_revT-1"))
    21.        (Setq LNC (strcat "PE_Rev"(rtos RN)"-Cloud"))
    22.    (COMMAND "-LAYER" "M" LNCD "C" "40" LNC "S" LNC "")
    23.    (c:revcloud)
    24. (setvar "clayer" oldlayer)
    25. (princ)
    26. )
  • 回复

    使用道具 举报

    4

    主题

    940

    帖子

    961

    银币

    初来乍到

    Rank: 1

    铜币
    12
    发表于 2022-7-6 10:18:23 | 显示全部楼层
    ^^^^^^^^^^^
     
    或者,如果版本号中不需要小数点,请使用(getint)而不是(getreal),并使用(itoa)而不是(rtos)。
     
    ****编辑****
     
    事实上如果使用(rtos RN 2 0),它将返回一个没有小数点的数字字符串,而不是整数
     
    此外,我认为在代码的修订云部分中没有将LNCD设置为变量
     
    ****编辑****
     
    现在我想起来了,为什么不尝试使用(setq RN(Getstring“Enter Revision Number:”)并一起消除(rtos)/(itoa)。
    回复

    使用道具 举报

    21

    主题

    52

    帖子

    31

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    105
    发表于 2022-7-6 10:35:05 | 显示全部楼层
    好了,就这样。。。
     
    现在是最后几个问题:
     
    [列表]
  • 我可以输入RN默认值到最后一个值吗,这样如果我连续做一堆,我就不必一直重新输入它了?
  • 当我开始和结束云时,我可以自动执行例程来选择标记上的中点osnap吗,还是应该等待并使用某种修剪功能来使用标记线修剪云?
  • 当我运行整个例程并完成云时,我不会切换回原始层。我不记得如何让它在完成REVCLOUD命令后采取下一步。
    非常感谢您的帮助!
     
    1. (defun c:PE_rev ()
    2. (setq OL (getvar "clayer"))
    3. (setvar "cmdecho" 1)
    4. ;            create revision tag layer then insert tag portion;;;;;;;;;;;;;;;;;;
    5. ;Get Revision number
    6.        (SETQ RN (GETINT "Enter Revision number: "))
    7.        (Setq LND (strcat "PE_Rev"(itoa RN)"-Delta"))
    8. ;                         if you use (rtos RN 2 0) it will return an integer, (rtos RN 2 1)
    9.        (SETQ SF (* (getvar "dimscale") 0.1))
    10.        `    (TERPRI)
    11.    (COMMAND "-LAYER" "M" LND "C" "40" LND "S" LND "")
    12.        (SETQ PT (GETPOINT "SELECT INSERTION POINT:"))
    13.            (TERPRI)
    14. ;
    15. ;                        EY_Rev is the revision tag symbol located at H:\Eng\a_blocks\Symbols;
    16.    (COMMAND "-INSERT" "H:\\Eng\\a_blocks\\Symbols\\EY_REV" PT SF "" "" RN)
    17. ;
    18. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Revision cloud portion;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    19. ;            create revision layer then cloud
    20.        (Setq LNC (strcat "PE_Rev"(itoa RN)"-Cloud"))
    21. ;        (if (null (tblsearch "layer" LNC))
    22.    (COMMAND "-LAYER" "M" LNC "C" "40" LNC "S" LNC "")
    23.    (comand revcloud)
    24. (setvar "clayer" OL)
    25. (princ)
    26. )
  • 回复

    使用道具 举报

    1

    主题

    316

    帖子

    311

    银币

    初来乍到

    Rank: 1

    铜币
    29
    发表于 2022-7-6 10:42:33 | 显示全部楼层
    (定义c:PE_版本()
    (初始错误)
    (setvar“cmdecho”1)
    ;            创建修订标记层,然后插入标记部分;;;;;;;;;;;;;;;;;;
    ;获取修订号
    (如果(null*GLOBALRN*)
    (setq*GLOBALRN*1)
    )
    (initget 6)
    (SETQ)
    RN(GETINT
    (STRCAT“输入修订号:”)
    )
    )
    (如果(非RN)
    (setq RN*GLOBALRN*)
    (SETQ*GLOBALRN*RN)
    )
    (Setq LND(strcat“PE_Rev”(itoa RN)“-Delta”))
    ;                         如果使用(rtos RN 2 0),它将返回一个整数,(rtos RN 2 1)
    (SETQ SF(*(getvar“dimscale”)0.1))
    `
    (ERPI)
    (命令“-LAYER“M”LND“C”40“LND”S“LND”)
    (SETQ PT(GETPOINT“选择插入点:”))
    (ERPI)
    ;
    ;                        EY\U Rev是位于H:\Eng\a\U块\符号处的修订标签符号;
    (命令“-插入“H:\\Eng\\a\u blocks\\Symbols\\EY\u REV”
    PT SF
    ""   ""
    注册护士
    )
    ;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;修订云部分;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;            创建修订层,然后创建云线
    (Setq LNC(strcat“PE_Rev”(itoa RN)“-云”)
    ;        (if(null(tblsearch“layer”LNC))
    (命令“-LAYER“M”LNC“C”40“LNC”S“LNC”)
    (comand revcloud)
    (while(>(getvar“CmdActive”)0)(命令暂停)
    (重置)
    (普林斯)
    )
     
     
    (defun initerr();初始化错误
    (setq oldlayer(getvar“clayer”);保存设置
    (setq oldsnap(getvar“osmode”))
    (setq oldpick(getvar“pickbox”))
    (设定温度*误差*);保存*错误*
    (setq*错误*陷阱);重新分配*错误*
    (普林斯)
    )     ;德芬
    ;;;*===========================================================
    (defun陷阱(errmsg);定义陷阱
    (命令nil nil nil)
    (if(not(member errmsg’(“console break”“函数已取消”))
    )
    (princ(strcat“\n错误:“errmsg”);打印消息
    )
    ;  (命令“undo”“b”);撤消返回(这是RON可选的)
    (setvar“clayer”oldlayer);重置设置
    (setvar“blipmode”1)
    (setvar“menuecho”0)
    (setvar“highlight”1)
    (setvar“osmode”oldsnap)
    (setvar“pickbox”oldpick)
    (原理“\n错误重置环境”);通知用户
    (ERPI)
    (setq*误差*温度);还原*错误*
    (普林斯)
    )     ;德芬
    ;;;*===========================================================
    (取消重置();定义重置
    (setq*误差*温度);还原*错误*
    (setvar“clayer”oldlayer);重置设置
    (setvar“blipmode”1)
    (setvar“menuecho”0)
    (setvar“highlight”1)
    (setvar“osmode”oldsnap)
    (setvar“pickbox”oldpick)
    (普林斯)
    )     ;德芬
     
     
     
    ;;; 对于您希望更好地在内部使用WIPEOUT的装饰
    ;;;你的街区
    回复

    使用道具 举报

    3

    主题

    12

    帖子

    9

    银币

    初来乍到

    Rank: 1

    铜币
    15
    发表于 2022-7-6 10:49:41 | 显示全部楼层
    嗨,我想用威兹曼的Lisp程序,但我有两个问题,
     
    1) 我不确定lisp如何将修订号传递给delta的块属性,因此我不确定如何为此创建修订块。
    2) 一旦插入增量,脚本似乎就结束了,云永远不会被创建。
     
    是否可以先绘制云,然后选择三角形的插入点?
     
    谢谢
    回复

    使用道具 举报

    发表回复

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

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

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

    GMT+8, 2025-3-6 23:04 , Processed in 0.382606 second(s), 77 queries .

    © 2020-2025 乐筑天下

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