乐筑天下

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

[编程交流] 需要帮助清理代码,或

[复制链接]

10

主题

895

帖子

887

银币

初来乍到

Rank: 1

铜币
49
发表于 2022-7-6 10:17:11 | 显示全部楼层 |阅读模式
我是从其他几个lisp例程中拼凑出来的,也是从我所知的很少的东西中拼凑出来的。当然可以做得更好。我没有错误捕获,我不知道更新的vlisp命令,等等。
 
  1. (DeFun C:OFFM ( / clayer  ENTITY) ; change OFFM to any name you like that doesn't already exist
  2. (SetVar "CmdEcho" 0)
  3. (INITGET "G g S s B b U u") ; add a unique letter for each material you add
  4. (SETQ MatType (strcase (getkword "\nGypboard  Stud  Brick  stUcco..? ")))
  5. (COND
  6. ((= MatType "B") ;set this letter to match one of the choices three lines above, B = brick
  7. (SETQ layernam  "BRICK") ;change BRICK to a layer name you would use, repeat for those below
  8. (SETQ offsetdista "2.5")  ;change to offset distance for brick, repeat for those below
  9. (SETQ layercolor "1")  ;set color to what you would want, repeat for those below
  10. )
  11.      ((= MatType "G")
  12. (SETQ layernam  "GYPSUM")
  13. (SETQ offsetdista "5/8")
  14. (SETQ layercolor "4")
  15. )
  16. ((= MatType "S")
  17. (SETQ layernam  "STUD")
  18. (SETQ offsetdista "3.5")
  19. (SETQ layercolor "2")
  20. )
  21. ((= MatType "U")
  22. (SETQ layernam  "STUCCO")
  23. (SETQ offsetdista "1")
  24. (SETQ layercolor "3")
  25. )
  26. );close cond
  27. (COMMAND ".LAYER" "make" LAYERNAM "color" layercolor "" "")
  28. (Command ".OFFSET" offsetdista pause pause "")
  29. (SetQ ENTITY (EntLast)
  30.        ENTITY (EntGet ENTITY)
  31.        ENTITY (SubSt (Cons 8 layernam) (Assoc 8 ENTITY) ENTITY)
  32. )
  33. (EntMod ENTITY)
  34. (SetVar "CmdEcho" ECHO)
  35. (PrinC)
  36. )
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:30:00 | 显示全部楼层
在等待妻子完成T台项目的时候,我决定玩一玩。我将材质提示嵌入到选择中(还提供了在任何时间点更改材质的选项)。
 
该功能应该非常接近地镜像Offset命令。
 
  1. (defun c:OffM (/ *error* _layer _sel cmd ent pnt eLast entity)
  2. ;; Alan J. Thompson, 10.14.10
  3. (defun *error* (msg)
  4.    (redraw)
  5.    (and cmd (setvar 'cmdecho cmd))
  6.    (if (and msg (not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*QUIT*,")))
  7.      (princ (strcat "\nError: " msg))
  8.    )
  9. )
  10. (defun _layer (name color)
  11.    (or (tblsearch "LAYER" name)
  12.        (entmake (list '(0 . "LAYER")
  13.                       '(100 . "AcDbSymbolTableRecord")
  14.                       '(100 . "AcDbLayerTableRecord")
  15.                       (cons 2 name)
  16.                       '(70 . 0)
  17.                       (cons 62 color)
  18.                 )
  19.        )
  20.    )
  21. )
  22. (defun _sel (/ e g)
  23.    (setvar 'errno 0)
  24.    (while (and (not g) (/= 52 (getvar 'errno)))
  25.      (initget 0 "Brick Gypsum Stud stUcco")
  26.      (setq e (entsel (strcat "\nSelect object to offset as material [brick/Gypsum/Stud/stUcco] <"
  27.                              (cond (*OffM:Mat*)
  28.                                    ((setq *OffM:Mat* "Brick"))
  29.                              )
  30.                              ">: "
  31.                      )
  32.              )
  33.      )
  34.      (cond ((and (listp e) (eq (type (car e)) 'ENAME))
  35.             (setq g
  36.                    (cond
  37.                      ((eq
  38.                         4
  39.                         (logand
  40.                           4
  41.                           (cdr (assoc 70 (entget (tblobjname "LAYER" (cdr (assoc 8 (entget (car e))))))))
  42.                         )
  43.                       )
  44.                       (prompt "\nThe object is on a locked layer.")
  45.                      )
  46.                      ((not (member (cdr (assoc 0 (entget (car e))))
  47.                                    '("ARC" "CIRCLE" "ELLIPSE" "LINE" "LWPOLYLINE" "SPLINE" "XLINE")
  48.                            )
  49.                       )
  50.                       (prompt "\nCannot offset that object.")
  51.                      )
  52.                      ((car e))
  53.                    )
  54.             )
  55.            )
  56.            ((eq (type e) 'STR) (setq *OffM:Mat* e))
  57.            ((setq g (eq 52 (getvar 'errno))) nil)
  58.            ((eq 7 (getvar 'errno)) (setq g (prompt "\nMissed, try again.")))
  59.      )
  60.    )
  61. )
  62. (setq cmd (getvar 'cmdecho))
  63. (setvar 'cmdecho 0)
  64. (while (and (setq ent (_sel))
  65.              (not (redraw ent 3))
  66.              (setq pnt (getpoint "\nSpecify point on side to offset: "))
  67.         )
  68.    (redraw)
  69.    (setq eLast (entlast))
  70.    (command "_.offset"
  71.             (cond ((eq *OffM:Mat* "Brick") (_layer (strcase *OffM:Mat*) 1) 2.5)
  72.                   ((eq *OffM:Mat* "Gypsum") (_layer (strcase *OffM:Mat*) 4) 0.625)
  73.                   ((eq *OffM:Mat* "Stud") (_layer (strcase *OffM:Mat*) 2) 3.5)
  74.                   ((eq *OffM:Mat* "stUcco") (_layer (strcase *OffM:Mat*) 3) 1.)
  75.             )
  76.             ent
  77.             "_non"
  78.             pnt
  79.             ""
  80.    )
  81.    (or
  82.      (equal eLast (cdr (assoc -1 (setq entity (entget (entlast))))))
  83.      (entmod (subst (cons 8 *OffM:Mat*) (assoc 8 entity) entity))
  84.    )
  85. )
  86. (*error* nil)
  87. (princ)
  88. )
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 10:36:06 | 显示全部楼层
我想我会尝试这样的方式:
 
  1. [b][color=BLACK]([/color][/b]defun c:offm-db [b][color=FUCHSIA]([/color][/b]/ data MatType fe ed[b][color=FUCHSIA])[/color][/b]
  2. [b][color=FUCHSIA]([/color][/b]setq data '[b][color=NAVY]([/color][/b][b][color=MAROON]([/color][/b][color=#2f4f4f]"Brick"[/color]   2.5    1[b][color=MAROON])[/color][/b]
  3.              [b][color=MAROON]([/color][/b][color=#2f4f4f]"Stud"[/color]    3.5    2[b][color=MAROON])[/color][/b]
  4.              [b][color=MAROON]([/color][/b][color=#2f4f4f]"Gypsum"[/color]  0.625  4[b][color=MAROON])[/color][/b]
  5.              [b][color=MAROON]([/color][/b][color=#2f4f4f]"stUcco"[/color]  1.0    3[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  6. [b][color=FUCHSIA]([/color][/b]initget 1 [color=#2f4f4f]"Gypsum Stud Brick stUcco"[/color][b][color=FUCHSIA])[/color][/b]
  7. [b][color=FUCHSIA]([/color][/b]setq MatType [b][color=NAVY]([/color][/b]getkword [color=#2f4f4f]"\nMaterial - Gypsum/Stud/Brick/stUcco:   "[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  8. [b][color=FUCHSIA]([/color][/b]setvar [color=#2f4f4f]"OFFSETDIST"[/color] [b][color=NAVY]([/color][/b]nth 1 [b][color=MAROON]([/color][/b]assoc MatType data[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  9. [b][color=FUCHSIA]([/color][/b]setvar [color=#2f4f4f]"CMDECHO"[/color] 1[b][color=FUCHSIA])[/color][/b]
  10. [b][color=FUCHSIA]([/color][/b]setq fe [b][color=NAVY]([/color][/b]entlast[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  11. [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]eq fe [b][color=MAROON]([/color][/b]entlast[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  12.        [b][color=NAVY]([/color][/b]command [color=#2f4f4f]"_.OFFSET"[/color] [color=#2f4f4f]""[/color] pause pause [color=#2f4f4f]""[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  13. [b][color=FUCHSIA]([/color][/b]setvar [color=#2f4f4f]"CMDECHO"[/color] 0[b][color=FUCHSIA])[/color][/b]
  14. [b][color=FUCHSIA]([/color][/b]setq ed [b][color=NAVY]([/color][/b]entget [b][color=MAROON]([/color][/b]entlast[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  15. [b][color=FUCHSIA]([/color][/b]entmod [b][color=NAVY]([/color][/b]subst [b][color=MAROON]([/color][/b]cons 8 MatType[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]assoc 8 ed[b][color=MAROON])[/color][/b] ed[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  16. [b][color=FUCHSIA]([/color][/b]command [color=#2f4f4f]"_.LAYER"[/color] [color=#2f4f4f]"_C"[/color] [b][color=NAVY]([/color][/b]itoa [b][color=MAROON]([/color][/b]nth 2 [b][color=GREEN]([/color][/b]assoc MatType data[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] MatType [color=#2f4f4f]""[/color][b][color=FUCHSIA])[/color][/b]
  17. [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 
数据列表中的字符串名称必须与材质和图层名称匹配。
数据列表原子将是层/材料偏移距离Color_编号
 
-大卫
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 10:37:46 | 显示全部楼层
这将使一切变得更有活力:
 
  1. [b][color=BLACK]([/color][/b]defun c:offm-db [b][color=FUCHSIA]([/color][/b]/ data istr MatType fe ed[b][color=FUCHSIA])[/color][/b]
  2. [b][color=FUCHSIA]([/color][/b]setq data '[b][color=NAVY]([/color][/b][b][color=MAROON]([/color][/b][color=#2f4f4f]"Brick"[/color]   2.5    1[b][color=MAROON])[/color][/b]
  3.              [b][color=MAROON]([/color][/b][color=#2f4f4f]"Stud"[/color]    3.5    2[b][color=MAROON])[/color][/b]
  4.              [b][color=MAROON]([/color][/b][color=#2f4f4f]"Gypsum"[/color]  0.625  4[b][color=MAROON])[/color][/b]
  5.              [b][color=MAROON]([/color][/b][color=#2f4f4f]"stUcco"[/color]  1.0    3[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  6. [b][color=FUCHSIA]([/color][/b]setq istr
  7. [b][color=NAVY]([/color][/b]apply 'strcat
  8.    [b][color=MAROON]([/color][/b]mapcar '[b][color=GREEN]([/color][/b]lambda [b][color=BLUE]([/color][/b]s[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]strcat s [color=#2f4f4f]" "[/color][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  9.      [b][color=GREEN]([/color][/b]mapcar 'car data[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  10. [b][color=FUCHSIA]([/color][/b]initget 1 istr[b][color=FUCHSIA])[/color][/b]
  11. [b][color=FUCHSIA]([/color][/b]setq MatType [b][color=NAVY]([/color][/b]getkword [b][color=MAROON]([/color][/b]strcat [color=#2f4f4f]"\nMaterial - "[/color] istr [color=#2f4f4f]":   "[/color][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  12. [b][color=FUCHSIA]([/color][/b]setvar [color=#2f4f4f]"OFFSETDIST"[/color] [b][color=NAVY]([/color][/b]nth 1 [b][color=MAROON]([/color][/b]assoc MatType data[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  13. [b][color=FUCHSIA]([/color][/b]setvar [color=#2f4f4f]"CMDECHO"[/color] 1[b][color=FUCHSIA])[/color][/b]
  14. [b][color=FUCHSIA]([/color][/b]setq fe [b][color=NAVY]([/color][/b]entlast[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  15. [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]eq fe [b][color=MAROON]([/color][/b]entlast[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  16.        [b][color=NAVY]([/color][/b]command [color=#2f4f4f]"_.OFFSET"[/color] [color=#2f4f4f]""[/color] pause pause [color=#2f4f4f]""[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  17. [b][color=FUCHSIA]([/color][/b]setvar [color=#2f4f4f]"CMDECHO"[/color] 0[b][color=FUCHSIA])[/color][/b]
  18. [b][color=FUCHSIA]([/color][/b]setq ed [b][color=NAVY]([/color][/b]entget [b][color=MAROON]([/color][/b]entlast[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  19. [b][color=FUCHSIA]([/color][/b]entmod [b][color=NAVY]([/color][/b]subst [b][color=MAROON]([/color][/b]cons 8 MatType[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]assoc 8 ed[b][color=MAROON])[/color][/b] ed[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  20. [b][color=FUCHSIA]([/color][/b]command [color=#2f4f4f]"_.LAYER"[/color] [color=#2f4f4f]"_C"[/color] [b][color=NAVY]([/color][/b]itoa [b][color=MAROON]([/color][/b]nth 2 [b][color=GREEN]([/color][/b]assoc MatType data[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] MatType [color=#2f4f4f]""[/color][b][color=FUCHSIA])[/color][/b]
  21. [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 
 
-大卫
回复

使用道具 举报

10

主题

895

帖子

887

银币

初来乍到

Rank: 1

铜币
49
发表于 2022-7-6 10:48:51 | 显示全部楼层
这两个都很好。你的例行公事怎么知道在材料中使用单个字母?
艾伦,我喜欢你的作品留在节目里,这样你就可以换其他材料了。
 
谢谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:52:16 | 显示全部楼层
你好,RKent,
 
为了回答您的问题,我建议您阅读initget函数的VLIDE帮助文档
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 11:00:27 | 显示全部楼层
不确定,但我认为您正在做的是定义墙设置。可以有一个主文件。包含所有图层设置和代码的txt文件,例如您正在绘制墙,自动更改为正确的图层。这样做是为了让客户端可以选择层名称,但代码始终有效。偏移是通过新的主拨号或拾取测量偏移的现有墙来完成的。此外,如果你运行了一个墙例程,并且没有设置,那么它也会询问你。这节省了硬编码,并且随着您添加更多的程序,它们会保持一致。
 
将progname更改为所需的txt文件
1234567890123456789012345678901234567890
Newname Progname Col线型
砖-1砖-1连续
天花板--2天花板--2 6连续
天花板--3天花板--3 6连续
墙--2墙--2 4中心
门--2门--2 3连续
门--3门--3 4连续
 
这是一个屋顶程序的lisp
(setq lay_搜索屋顶-2)
(setq lay_彩色屋顶——2col)
(setq l_型屋顶——2lin)
(lay_miss)
 
lay miss为75个程序设置所有参数。
 
也可以添加偏移量Brick 110 gap 50 Stud 90
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:04:51 | 显示全部楼层
是的,我想给这个选项,并完全删除材料选择选项作为一个额外的提示。
回复

使用道具 举报

10

主题

895

帖子

887

银币

初来乍到

Rank: 1

铜币
49
发表于 2022-7-6 11:13:22 | 显示全部楼层
 
我想是的。在这种情况下,entsel必须遵循initget。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:18:00 | 显示全部楼层
对的
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 21:12 , Processed in 1.584239 second(s), 72 queries .

© 2020-2025 乐筑天下

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