乐筑天下

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

[编程交流] 诡异的朦胧。。。

[复制链接]

13

主题

59

帖子

46

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 13:05:03 | 显示全部楼层 |阅读模式

一直在玩命令自定义等游戏,并开发了一个宏,该宏将把工作层更改为另一个基本上用于标注的层,然后在选择时将标注样式设置为另一个,最后生成一个标注,有效地为其前一个层创建一个统一的标注,最后切换回前一个层。所有工作正常,直到指定用于所述尺寸的指定层在图形中不存在,然后AutoCAD询问该怎么做。显然,为要创建的新层设计代码是有意义的,这很好,但我的问题是;当出现这样的问题时,宏可能需要满足两个分支中的一个,为了克服这种情况,将使用何种编码?我猜还有其他方法可以解决这个问题,比如总是要求在一个特定的名称下创建一个层,不管它是否存在,然后以这种方式成功,但一定有更好的方法吗?以下是我到目前为止的想法,请随意批评。
^C层_s“CSP_DIMS”-dimstyle;R、 \_dimaligned\\\_上一个图层
 
干杯,伙计们!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:11:07 | 显示全部楼层
我会使用一个反应器来执行这类任务,从所有维度命令中做出反应。
回复

使用道具 举报

13

主题

59

帖子

46

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 13:12:31 | 显示全部楼层
 
嗯。有没有可能让我沉迷于这方面的信息?即使是一个链接或什么都可以。我对它有点陌生,CAD中的F1今天并不友好;[
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:17:19 | 显示全部楼层
 
对不起,我正在为你准备东西
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:19:57 | 显示全部楼层
好的,像这样:
 
  1. (defun c:ReON ()
  2. (vl-load-com)
  3. (if (not *Dim:React*)
  4.    (progn
  5.      (setq *Dim:React*
  6.        (vlr-command-reactor nil
  7.          (list
  8.            (cons :vlr-CommandWillStart 'StrtComm)
  9.            (cons :vlr-CommandEnded      'EndComm)
  10.            (cons :vlr-CommandCancelled  'CanComm))))
  11.      (if (not (tblsearch "LAYER" "CSP_DIMS"))
  12.        (vla-add
  13.          (vla-get-layers
  14.            (vla-get-ActiveDocument
  15.              (vlax-get-acad-object))) "CSP_DIMS"))
  16.      (princ "\n<<- Reactor Initiated ->>")))
  17. (princ))
  18. (defun StrtComm (React Args / *doc)
  19. (setq old#lay (getvar "CLAYER"))
  20. (if (wcmatch (strcase (car Args)) "DIM*")
  21.    (setvar "CLAYER" "CSP_DIMS")))
  22. (defun EndComm (React Args)
  23. (if (and old#lay
  24.        (wcmatch (strcase (car Args)) "DIM*"))      
  25.    (setvar "CLAYER" old#lay)))
  26. (defun CanComm (React Args)
  27. (if (and old#lay
  28.        (wcmatch (strcase (car Args)) "DIM*"))      
  29.    (setvar "CLAYER" old#lay)))
  30. (defun c:ReOFF (/ old#lay)
  31. (if *Dim:React*
  32.    (progn
  33.      (vlr-remove *Dim:React*)
  34.      (setq *Dim:React* nil)
  35.      (princ "\n<<- Reactor Deactivated ->>")))
  36. (princ))

 
说明:
 
[列表]
  • 键入ReON以激活反应器。每个绘图任务只需要调用一次。
  • 绘制一些尺寸。
  • 如果要停用反应器,请键入ReOFF。
    [/列表]
  • 回复

    使用道具 举报

    114

    主题

    1万

    帖子

    1万

    银币

    中流砥柱

    Rank: 25

    铜币
    543
    发表于 2022-7-6 13:23:15 | 显示全部楼层
    或者,也可以合并dimstyle:
     
    1. (defun c:ReON ( )
    2. (vl-load-com)
    3. (setq *doc
    4.    (vla-get-ActiveDocument
    5.      (vlax-get-acad-object)))
    6. (if (not *Dim:React*)
    7.    (progn
    8.      (setq *Dim:React*
    9.        (vlr-command-reactor nil
    10.          (list
    11.            (cons :vlr-CommandWillStart 'StrtComm)
    12.            (cons :vlr-CommandEnded      'EndComm)
    13.            (cons :vlr-CommandCancelled  'CanComm))))
    14.      (if (not (tblsearch "LAYER" "CSP_DIMS"))
    15.        (vla-add
    16.          (vla-get-layers *doc) "CSP_DIMS"))
    17.      (if (not (tblsearch "DIMSTYLE" "Tester"))
    18.        (vla-add
    19.          (vla-get-Dimstyles *doc) "Tester"))
    20.      (princ "\n<<- Reactor Initiated ->>")))
    21. (princ))
    22. (defun StrtComm (React Args)
    23. (setq old#lay (getvar "CLAYER"))
    24. (if (wcmatch (strcase (car Args)) "DIM*")
    25.    (progn
    26.      (vl-catch-all-apply
    27.        (function
    28.          (lambda ( )
    29.            (vla-put-ActiveDimstyle *doc
    30.              (vla-item
    31.                (vla-get-Dimstyles *doc) "Tester")))))
    32.      (setvar "CLAYER" "CSP_DIMS"))))
    33. (defun EndComm (React Args)
    34. (if (and old#lay
    35.        (wcmatch (strcase (car Args)) "DIM*"))      
    36.    (setvar "CLAYER" old#lay)))
    37. (defun CanComm (React Args)
    38. (if (and old#lay
    39.        (wcmatch (strcase (car Args)) "DIM*"))      
    40.    (setvar "CLAYER" old#lay)))
    41. (defun c:ReOFF (/ old#lay *doc)
    42. (if *Dim:React*
    43.    (progn
    44.      (vlr-remove *Dim:React*)
    45.      (setq *Dim:React* nil)
    46.      (princ "\n<<- Reactor Deactivated ->>")))
    47. (princ))
    回复

    使用道具 举报

    13

    主题

    59

    帖子

    46

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    65
    发表于 2022-7-6 13:26:04 | 显示全部楼层
     
     
     
    哇,'粗文字!我继续把上面的代码放到了我的acaddoc中。pgp文件,它确实像一个符咒。我现在的问题是,作为手动调用“REON”命令的替代方法,我是否可以将其合并到我的维度按钮中,这样每次单击按钮时它都会启动“REON”,这样我就不必记得运行它(当然,之后再次关闭它),这是否会因为后续发生的潜在错误而不利?此外,虽然您的回复确实解决了我的维度难题,但我想了解更多您用于获得此类结果的编码。显然,与我正在使用的过于简单的方法相比,这是一种更强大的方法。如果你能建议我进一步阅读这个主题,我将不胜感激。非常感谢你迄今为止给我的一切!
    回复

    使用道具 举报

    114

    主题

    1万

    帖子

    1万

    银币

    中流砥柱

    Rank: 25

    铜币
    543
    发表于 2022-7-6 13:29:48 | 显示全部楼层
    您只需要在绘图会话开始时调用reON一次,反应器将一直工作,直到调用reOFF或关闭绘图。
     
    你可以把代码放进你的阿卡多克。lsp文件,并包括另一行:
     
    1. (c:reON)
    以便每次打开图形时都会启动反应器。
     
    关于反应堆的信息,我认为AfraLISP有一些信息:
     
    http://www.afralisp.net/vl/reactors1.htm
     
    还要检查Visual LISP编辑器(VLIDE)帮助文件。
     
    回复

    使用道具 举报

    13

    主题

    59

    帖子

    46

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    65
    发表于 2022-7-6 13:33:24 | 显示全部楼层
    太棒了非常感谢,这又是一个骗局
    回复

    使用道具 举报

    114

    主题

    1万

    帖子

    1万

    银币

    中流砥柱

    Rank: 25

    铜币
    543
    发表于 2022-7-6 13:35:28 | 显示全部楼层
    没问题,
     
    一个最终版本-这将在执行命令后重置旧的标注样式:
     
    1. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:ReON [b][color=RED]([/color][/b] [b][color=RED])[/color][/b]
    2. [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] *dim_lay* [b][color=#ff00ff]"CSP_DIMS"[/color][/b]  [i][color=#990099];; <<-- Change these[/color][/i]
    3.        *dim_sty* [b][color=#ff00ff]"Tester"[/color][/b]
    4. [b][color=RED])[/color][/b]
    5. [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b]
    6. [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] *doc
    7.    [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveDocument[/color][/b]
    8.      [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-acad-object[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
    9. [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] *Dim:React*[b][color=RED])[/color][/b]
    10.    [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b]
    11.      [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] *Dim:React*
    12.        [b][color=RED]([/color][/b][b][color=BLUE]vlr-command-reactor[/color][/b] [b][color=BLUE]nil[/color][/b]
    13.          [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b]
    14.            [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [color=Blue][b]:vlr-CommandWillStart[/b][/color] [b][color=DARKRED]'[/color][/b]StrtComm[b][color=RED])[/color][/b]
    15.            [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=Blue]:vlr-CommandEnded [/color][/b]     [b][color=DARKRED]'[/color][/b]EndComm[b][color=RED])[/color][/b]
    16.            [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=Blue]:vlr-CommandCancelled[/color][/b]  [b][color=DARKRED]'[/color][/b]CanComm[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
    17.      [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]tblsearch[/color][/b] [b][color=#ff00ff]"LAYER"[/color][/b] *dim_lay*[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
    18.        [b][color=RED]([/color][/b][b][color=BLUE]vla-add[/color][/b]
    19.          [b][color=RED]([/color][/b][b][color=BLUE]vla-get-layers[/color][/b] *doc[b][color=RED])[/color][/b] *dim_lay*[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
    20.      [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]tblsearch[/color][/b] [b][color=#ff00ff]"DIMSTYLE"[/color][/b] *dim_sty*[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
    21.        [b][color=RED]([/color][/b][b][color=BLUE]vla-add[/color][/b]
    22.          [b][color=RED]([/color][/b][b][color=BLUE]vla-get-Dimstyles[/color][/b] *doc[b][color=RED])[/color][/b] *dim_sty*[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
    23.      [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=#ff00ff]"\n<<- Reactor Initiated ->>"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
    24. [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
    25. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] StrtComm [b][color=RED]([/color][/b]React Args[b][color=RED])[/color][/b]
    26. [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] old#lay [b][color=RED]([/color][/b][b][color=BLUE]getvar[/color][/b] [b][color=#ff00ff]"CLAYER"[/color][/b][b][color=RED])[/color][/b] old#sty [b][color=RED]([/color][/b][b][color=BLUE]getvar[/color][/b] [b][color=#ff00ff]"DIMSTYLE"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
    27. [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]or[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]wcmatch[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcase[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] Args[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#ff00ff]"*DIM*"[/color][/b][b][color=RED])[/color][/b]
    28.          [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [b][color=#ff00ff]"QLEADER"[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcase[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] Args[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
    29.    [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b]
    30.      [b][color=RED]([/color][/b][b][color=BLUE]vl-catch-all-apply[/color][/b]
    31.        [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b]
    32.          [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b] [b][color=RED])[/color][/b]
    33.            [b][color=RED]([/color][/b][b][color=BLUE]vla-put-ActiveDimstyle[/color][/b] *doc
    34.              [b][color=RED]([/color][/b][b][color=BLUE]vla-item[/color][/b]
    35.                [b][color=RED]([/color][/b][b][color=BLUE]vla-get-Dimstyles[/color][/b] *doc[b][color=RED])[/color][/b] *dim_sty*[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
    36.      [b][color=RED]([/color][/b][b][color=BLUE]setvar[/color][/b] [b][color=#ff00ff]"CLAYER"[/color][/b] *dim_lay*[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
    37. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] EndComm [b][color=RED]([/color][/b]React Args[b][color=RED])[/color][/b]
    38. [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] old#lay old#sty
    39.        [b][color=RED]([/color][/b][b][color=BLUE]wcmatch[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcase[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] Args[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#ff00ff]"DIM*"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
    40.    [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b]
    41.      [b][color=RED]([/color][/b][b][color=BLUE]vl-catch-all-apply[/color][/b]
    42.        [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b]
    43.          [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b] [b][color=RED])[/color][/b]
    44.            [b][color=RED]([/color][/b][b][color=BLUE]vla-put-ActiveDimstyle[/color][/b] *doc
    45.              [b][color=RED]([/color][/b][b][color=BLUE]vla-item[/color][/b]
    46.                [b][color=RED]([/color][/b][b][color=BLUE]vla-get-Dimstyles[/color][/b] *doc[b][color=RED])[/color][/b] old#sty[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
    47.      [b][color=RED]([/color][/b][b][color=BLUE]setvar[/color][/b] [b][color=#ff00ff]"CLAYER"[/color][/b] old#lay[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
    48. [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
    49. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] CanComm [b][color=RED]([/color][/b]React Args[b][color=RED])[/color][/b]
    50. [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] old#lay old#sty
    51.        [b][color=RED]([/color][/b][b][color=BLUE]wcmatch[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcase[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] Args[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#ff00ff]"DIM*"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
    52.    [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b]
    53.      [b][color=RED]([/color][/b][b][color=BLUE]vl-catch-all-apply[/color][/b]
    54.        [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b]
    55.          [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b] [b][color=RED])[/color][/b]
    56.            [b][color=RED]([/color][/b][b][color=BLUE]vla-put-ActiveDimstyle[/color][/b] *doc
    57.              [b][color=RED]([/color][/b][b][color=BLUE]vla-item[/color][/b]
    58.                [b][color=RED]([/color][/b][b][color=BLUE]vla-get-Dimstyles[/color][/b] *doc[b][color=RED])[/color][/b] old#sty[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
    59.      [b][color=RED]([/color][/b][b][color=BLUE]setvar[/color][/b] [b][color=#ff00ff]"CLAYER"[/color][/b] old#lay[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
    60. [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
    61. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:ReOFF [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] old#lay old#sty *doc *dim_lay* *dim_sty*[b][color=RED])[/color][/b]
    62. [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] *Dim:React*
    63.    [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b]
    64.      [b][color=RED]([/color][/b][b][color=BLUE]vlr-remove[/color][/b] *Dim:React*[b][color=RED])[/color][/b]
    65.      [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] *Dim:React* [b][color=BLUE]nil[/color][/b][b][color=RED])[/color][/b]
    66.      [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=#ff00ff]"\n<<- Reactor Deactivated ->>"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
    67. [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
    填充顶部的表格。
     
    要在会话中期更改配置,只需再次键入ReOn-这不会影响Reactor,但会影响层和样式选择。
     
    如果要完全停用反应器,请键入reOff。
    回复

    使用道具 举报

    发表回复

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

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

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

    GMT+8, 2025-3-5 06:19 , Processed in 0.836967 second(s), 72 queries .

    © 2020-2025 乐筑天下

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