乐筑天下

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

[编程交流] Lisp文件组织

[复制链接]

4

主题

78

帖子

74

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 10:02:08 | 显示全部楼层 |阅读模式
我有一个包含多个函数的lisp例程,我需要不时地进行更改,或添加其他函数等。有没有人有任何技术来组织文件,以便我可以轻松地从一个例程切换到另一个例程?现在,我只是在开头放一个列表,告诉我跳转到哪一行,但每次我添加另一个函数时,我都必须更改每一行(因为它添加了一行)
 
谢谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:11:21 | 显示全部楼层
我使用单独的文件-我发现使用windows的搜索工具更容易找到你需要的东西
回复

使用道具 举报

4

主题

78

帖子

74

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 10:14:58 | 显示全部楼层
这是我的layerstate命令,基本上我有一系列调用主函数的函数,提供一个层列表和属性作为参数。我不知道这是否是这个项目的最佳实践。
回复

使用道具 举报

8

主题

159

帖子

153

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 10:17:47 | 显示全部楼层
我会这样做:
例如:
1.文件kr:CON…-包含所有转换函数
文件kr:BLK-包含块函数
3.kr文件:DLG-对话框功能。
文件kr:SSX-选择集func。
.....
然后将所有文件“连接”到一个库文件,并将其放入支持autocad CAD。
克鲁格
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 10:23:58 | 显示全部楼层
像Kruuger一样,我有一个主lisp程序,它有很多defuns,这些都是从其他lisp调用的,因此你不必再次编写代码。主程序作为自动加载的一部分加载,其他程序根据需要加载。主lisp具有在绘制的图层设置、捕捉、单位等方面保持一致的功能,因此新的lisp提供了功能性,但背景始终相同。
 
令人惊讶的是,在一个lisp中,你有多少次都在执行同样的半打步骤,这样编程速度也会更快。可能是对程序开始时使用的defuns的描述。
回复

使用道具 举报

4

主题

78

帖子

74

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 10:26:46 | 显示全部楼层
好吧,就是这样,我有一个非常广泛的设置为我们的Lisp例程,我尽量避免编码任何两次。如果需要在多个程序中调用函数,我通常会将其移出。然而,这略有不同。基本上,这个Lisp文件包含一组图层列表。我要说的是,现在大约有十几个列表,其中一些列表有多达180多个层,整个文件超过2000行。我只是想找到一种更好的方法,在需要调整层或需要添加新层状态时在程序内部移动。也许我应该把它们都分割成各自独立的lisp文件,并以相似的开头开始它们的名字,这样它们就可以分组在一起了。它不是很漂亮,但我想这可能是唯一的选择。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 10:34:29 | 显示全部楼层
 
克里斯,
 
我赞成李的建议。
 
我使用单独的文件,并使用VLIDE项目来轻松管理它们,然后将项目编译为。FAS/。VLX(视需要而定)。
 
注意-我之前已经详细发布了这篇文章,但我担心这篇文章已经丢失了(在蓝色和橙色的网站上,不应命名)。
 
例如,对于我团队的工具,我创建/维护三类代码(每类代码在VLIDE中都有自己的“项目”):
 
个人设置-
自我咒骂;每个用户一个。
 
编程工具-
这些大多是给我的。这些都是我的“工具箱”函数(子函数),它们可以防止代码在我的工具套件中重复。
 
生产工具-
这些适用于所有用户,并且在复杂程度上也存在差异。从简单的键盘快捷键、通过Outlook(从AutoCAD)通过电子邮件发送报告,到用于快速创建泛洪平原表面的AECC工具(Land Desktop),等等。
 
我使用ACADDOC中的一个load语句。lsp加载我们的个人设置,其中包括对后续工具的条件调用。
 
例如-
 
“加载个人设置”功能(使用任意名称):
  1. (defun c:LPS ()
  2. ;; (load "programming_tools.fas")
  3. ;; ... Code for personal settings
  4. ;; (load "production_tools.fas")
  5. (princ))

 
 
条件加载,以避免“是否要保存绘图1”。图纸?”提示:
  1. (if (= 1 (getvar 'dwgtitled))      ; If drawing is named,
  2. (c:LPS))                         ; Then load personal settings.
  3. (princ)

 
 
[编辑]
我还对图层状态做了很多工作,并没有使用列表,而是自动导出*。LAS文件进入项目目录,并在绘图打开时自动导入图层状态(如果是我们标准化列表的一部分,并且在项目中找到)。
 
因此,如果公用设施调整图层状态发生更改(例如),用户只需进行必要的更改,然后使用键盘快捷键将其重新保存在当前图形中,并将其导出到预定义的项目文件夹。下次使用此图层状态打开图形时,将根据保存到项目中的内容在该图形中自动覆盖。
[/编辑]
 
希望这有帮助!
回复

使用道具 举报

4

主题

78

帖子

74

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 10:34:44 | 显示全部楼层
如何在多个项目中使用外部参照?
不管怎样,我从来没有真正尝试过,但每件事都是第一次,我会试一试。最糟糕的情况是需要一点时间来适应一种新的做事方式。不过,这有助于将来的编辑工作。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 10:41:26 | 显示全部楼层
 
实现这一点的方法有很多种。
 
例如:
 
考虑vl file copy、read line、vl string search、vl string subst和write line函数的环境,以替换旧的引用名称或临时名称(来自模板*.LAS文件),并根据文件命名约定将其替换为适当的引用名称。
 
另一种选择是手动将图层状态(*.LAS)从类似的复制到项目中,并在记事本中手动执行最初的查找替换。然后是一个人工级别的QC,然后依靠自动工具进行更新。
回复

使用道具 举报

4

主题

78

帖子

74

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 10:45:06 | 显示全部楼层
好的,我认为我所拥有的将起作用,我可以使用通配符来消除与*相关的外部参照问题。LAS文件。
 
  1. ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;
  2.    ;;2010.11.04  Layer Setup by Christopher T. Cowgill                                    ;;
  3.    ;;Truecolor function by Fred Tomke (www.theswamp.org)                                ;;
  4.    ;;Coding assistance provided by Opie, RobertB, and irneb (www.augi.com), ronjonp    ;;
  5.    ;;Original code simplification by alanjt (www.augi.com, www.theswamp.org)            ;;
  6.    ;;CTRL+G to goto Line)                                                                ;;
  7.    ;;c:Pavtmrkglayerstate LAY-PavtMrkg                                                    ;;
  8.    ;;c:createsanitaryprofilelayers LAY-Profiles                                        ;;
  9.    ;;c:createstormprofilelayers LAY-Profiles                                            ;;
  10.    ;;c:profilebaselayers LAY-Profiles                                                    ;;
  11.    ;;c:PNPBaseLayerstate LAY-PNPBase                                                    ;;
  12.    ;;c:SCDLayerstate LAY-SurveyControlData                                                ;;
  13.    ;;c:PNPMSLayerstate LAY-PNPInP                                                        ;;
  14.    ;;c:roadbaselayers LAY-RoadBase                                                        ;;
  15.    ;;c:surveybaselayers LAY-SurveyBase                                                    ;;
  16.    ;;c:tinlayerstate LAY-Tin                                                            ;;
  17.    ;;c:PnPFinalLayerState LAY-PNPFinal-Create                                            ;;
  18.    ;;c:CreatePnPLayers LAY-PNPFinal-Create                                                ;;
  19.    ;;c:logLayerState LAY-Log-Overall                                                    ;;
  20.    ;;c:overallsiteplan LAY-Log-Overall                                                    ;;
  21.    ;;c:createpresentationlayers LAY-Presentation                                        ;;
  22.    ;;c:CreateXsectionLayers LAY-XSection                                                ;;
  23.    ;;c:intersectionlayerstate LAY-InterSection                                            ;;
  24.    ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;
  25.    ;;****************************************************************************************************************************************
  26.    (defun truecolor (uColor / oColor)
  27.      (setq oColor (vla-getinterfaceobject acadObject "AutoCAD.AcCmColor.18"))
  28.      (cond
  29.    ((= (type uColor) 'INT)
  30.     (vla-put-ColorMethod oColor acColorMethodByACI)
  31.     (vla-put-ColorIndex oColor uColor)
  32.    )
  33.    ((not (listp uColor)) nil)
  34.    ((= (length uColor) 3)
  35.     (vla-put-ColorMethod oColor acColorMethodByRGB)
  36.     (vla-SetRGB oColor (car uColor) (cadr uColor) (last uColor))
  37.    )
  38.    ((= (length uColor) 2)
  39.     (vla-SetColorBookColor oColor (car uColor) (cadr uColor))
  40.    )
  41.      ) ; cond
  42.      ocolor
  43.    ) ; truecolor
  44.    ;;****************************************************************************************************************************************
  45.    (defun alllayerset (lst / listlayer name match)
  46.      (command "linetype" "_load" "*" "acad" "")
  47.      (command "-layer" "SET" "0" "")
  48.      (setq listlayer (vla-get-layers acaddocument))
  49.      (foreach y lst
  50.    (if (wcmatch (car y) "*`**")
  51.      ()
  52.      (if (tblsearch "LAYER" (car y))
  53.        ()
  54.        (vla-add listlayer (car y))
  55.      ) ;_ end of if
  56.    ) ;_ end of if
  57.      ) ;_ end of foreach
  58.      (vlax-for    x listlayer
  59.    (or (vl-position (setq name (strcase (vla-get-name x))) '("0" "DEFPOINTS"))
  60.        (if    (setq match (vl-remove-if-not
  61.                  (function (lambda (x) (wcmatch name (strcase (car x)))))
  62.                  lst
  63.                ) ;_ end of vl-remove-if-not
  64.        ) ;_ end of setq
  65.          (mapcar (function
  66.            (lambda    (p v)
  67.              (if v
  68.                (vl-catch-all-apply
  69.                  (function vlax-put-property)
  70.                  (list x p v)
  71.                ) ;_ end of vl-catch-all-apply
  72.              ) ;_ end of if
  73.            ) ;_ end of lambda
  74.              ) ;_ end of function
  75.              '(Freeze Color LineType Plottable Description Truecolor)
  76.              (cdar match)
  77.          ) ;_ end of mapcar
  78.        ) ;_ end of if
  79.    ) ;_ end of or
  80.      ) ;_ end of vlax-for
  81.      (setq name nil)
  82.      (vla-regen acadDocument acAllViewports)
  83.    ) ;_ end of defun
  1. (defun c:overallsiteplan (/ layerlist layerlist1 layerlist2)
  2.      (setq layerlist
  3.         '(
  4.           ("*|*" :vlax-true)
  5.          )
  6.      ) ;_ end of setq
  7.      (setq layerlist1
  8.         '(
  9.           ("*Prop Sanitary*" :vlax-false)
  10.           ("*Prop Forcemain*" :vlax-false)
  11.           ("*Prop Water*" :vlax-false)
  12.           ("*|Property" :vlax-false
  13.           ("*|ROW" :vlax-false
  14.           ("Dim" :vlax-false 3)
  15.           ("Text" :vlax-false 3)
  16.           ("*Exist EP*" :vlax-true)
  17.           ("*Prop EP*" :vlax-true)
  18.          )
  19.      ) ;_ end of setq
  20.      (alllayerset layerlist)
  21.      (alllayerset layerlist1)
  22.    ) ;_ end of defun
  23. (defun c:createpresentationlayers (/ layerlist acm)
  24.      (setq layerlist
  25.         (list
  26.           (list "Hatch Water" :vlax-false nil nil nil nil (truecolor (list 0 174 255)))
  27.           (list "Hatch Trees" :vlax-false nil nil nil nil (truecolor (list 127 255 0)))
  28.           (list "Hatch Concrete" :vlax-false nil nil nil nil (truecolor (list 200 200 200)))
  29.           (list "Hatch Grass" :vlax-false nil nil nil nil (truecolor (list 80 193 36)))
  30.           (list "Hatch HMA" :vlax-false nil nil nil nil (truecolor (list 100 100 100)))
  31.           (list "Hatch Gravel" :vlax-false nil nil nil nil (truecolor (list 174 100 0)))
  32.           (list "Sign Yellow"
  33.             :vlax-false
  34.             nil
  35.             nil
  36.             nil
  37.             nil
  38.             (truecolor (list "PANTONE(R) color bridge CMYK EC" "PANTONE 116 EC"))
  39.           ) ;_ end of list
  40.           (list "Sign Blue"
  41.             :vlax-false
  42.             nil
  43.             nil
  44.             nil
  45.             nil
  46.             (truecolor (list "PANTONE(R) color bridge CMYK EC" "PANTONE 294 EC"))
  47.           ) ;_ end of list
  48.           (list "Sign Orange"
  49.             :vlax-false
  50.             nil
  51.             nil
  52.             nil
  53.             nil
  54.             (truecolor (list "PANTONE(R) color bridge CMYK EC" "PANTONE 152 EC"))
  55.           ) ;_ end of list
  56.           (list "Sign Red"
  57.             :vlax-false
  58.             nil
  59.             nil
  60.             nil
  61.             nil
  62.             (truecolor (list "PANTONE(R) color bridge CMYK EC" "PANTONE 187 EC"))
  63.           ) ;_ end of list
  64.           (list "Sign Green"
  65.             :vlax-false
  66.             nil
  67.             nil
  68.             nil
  69.             nil
  70.             (truecolor (list "PANTONE(R) color bridge CMYK EC" "PANTONE 342 EC"))
  71.           ) ;_ end of list
  72.           (list "Sign Brown"
  73.             :vlax-false
  74.             nil
  75.             nil
  76.             nil
  77.             nil
  78.             (truecolor (list "PANTONE(R) color bridge CMYK EC" "PANTONE 469 EC"))
  79.           ) ;_ end of list
  80.           (list "Sign Flourecent" :vlax-false nil nil nil nil (truecolor (list 175 255 0)))
  81.           (list "Sign Purple"
  82.             :vlax-false
  83.             nil
  84.             nil
  85.             nil
  86.             nil
  87.             (truecolor (list "PANTONE(R) color bridge CMYK EC" "PANTONE 259 EC"))
  88.           ) ;_ end of list
  89.         ) ;_ end of list
  90.      ) ;_ end of setq
  91.      (alllayerset layerlist)
  92.    ) ;_ end of defun
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 23:58 , Processed in 0.384164 second(s), 83 queries .

© 2020-2025 乐筑天下

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