乐筑天下

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

[编程交流] 需要线型和/或LISP

[复制链接]

12

主题

29

帖子

17

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 09:35:37 | 显示全部楼层 |阅读模式
需要线型和/或LISP
 
 
AutoCAD 2007
我有很多棘手的问题/要求,我目前正在寻找一些LISP来解决它们。我一直在网上搜索我需要的lisps,虽然我已经找到了一些东西,但我仍然有一些东西,我似乎无法找到确切的我要找的东西。我想借此机会提前感谢每一位对我的问题有意见的人,感谢他们给予我的任何帮助。
 
 
 
我不确定这是否需要创建lisp或线型,但我正在寻找两种特定的线型。
 
第一个是我用来绘制雨水管道的线型。它由三条线组成,目前我必须将这三条线作为单独的部分绘制。基本上,它是一条中心多段线,设置为hidden2线型,全局宽度设置为,其他两条线是多段线两侧的连续线。例如,如果我要绘制直径为1’in的雨水管道,则多段线全局宽度设置为1.00,两条连续线之间的距离为1.00。因此,我希望能够创建一个线型/lisp,该线型/lisp将询问多段线的全局宽度(管径),然后允许我将管道(由三条线组成)绘制为一条线。此外,由于场地图形可能使用不同的比例(例如1“=40”),并且线型为hidden2线型,因此也可以在lisp中设置线型比例
 
 
第二种是一种与上述线型完全相同的线型,但中心多段线是连续的,而不是隐藏的。我使用此线型在场地平面上创建建筑轮廓。连续全局宽度多段线两侧的两条连续线使捕捉到建筑线的最外侧边缘变得更容易。
 
我知道这样的事情是存在的,因为我和一些人一起工作,他们使用了像这样的线型,这是他们过去工作过的公司,但我一直找不到他们。我已经包括了一个dwg文件,显示了所需的两种线型,以防我没有足够准确地描述它们。
 
有人准备挑战吗?
线型。图纸
回复

使用道具 举报

10

主题

8258

帖子

8335

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-6 09:39:21 | 显示全部楼层
你有2008,所以你必须有Express Tools。使用“生成线型”例程。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:42:16 | 显示全部楼层
 
下面是一系列可以学习LISP的网站:
 
启动LISP:
 
http://www.cadtutor.net/forum/showthread.php?t=38760
 
http://www.cadtutor.net/forum/showthread.php?t=38734
 
http://www.afralisp.net/
 
http://www.jefferypsanders.com/autolisptut.html
 
http://ronleigh.info/autolisp/index.htm
 
 
更高级的LISP教程:
 
http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-4.html
 
http://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/html/cltl/clm/node1.html
 
你准备好接受挑战了吗?
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 09:45:25 | 显示全部楼层
虽然我有你想要的,但更高级的,我不能提供它,因为版权。但我可以告诉你怎么做。
 
在lisp中(不是实际代码,而是过程)
 
更改为管道连接层
获取点1
获取点2
getreal管道宽度/2.0
角度1 pt1-pt2
角度2 pt2-pt1
线路pt1 pt2
计算pt3和pt4 pt5 pt6使用(极角1+90角2-90等)pt1和pt2的90度
将图层更改为外线图层
线路pt3 pt4
线路pt5 pt6
 
嘿,都做完了
回复

使用道具 举报

12

主题

29

帖子

17

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 09:50:44 | 显示全部楼层
谢谢大家的回复。
 
我尝试使用线型创建快速工具创建我要找的线型,但不幸的是,我没有成功。我完成了这些步骤,在它要求选择对象的起点和终点之后,当我选择组成线型的三条线时,程序返回一条类似“这是一个连续线型”的消息,不再让我继续。
 
谢谢你们所有的学习如何lisp链接,我同意,我想学习,我会看看他们。问题是我正在寻找的Lisp程序,我意识到这相当复杂,我可能无法很快学会如何创建它们。
 
感谢您提供了创建我正在寻找的线型的步骤,但不幸的是,我没有在lisp中执行这些步骤并应用它们的经验。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 09:53:47 | 显示全部楼层
对于你想要的数量,你真的需要自己学习。
回复

使用道具 举报

12

主题

29

帖子

17

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 09:57:15 | 显示全部楼层
再次感谢所有观看并回复的人。
只是想知道是否有其他人已经写了这个lisp或在网站上看到了它。我知道它是以lisp的形式存在的,与我共事过的许多人都使用过它。似乎找不到这个。
回复

使用道具 举报

0

主题

269

帖子

279

银币

限制会员

铜币
-4
发表于 2022-7-6 09:59:24 | 显示全部楼层
一些线程对此进行了讨论。显然,可以为此创建一条“多线”。
 
http://www.cadtutor.net/forum/showthread.php?t=17659
http://discussion.autodesk.com/forums/thread.jspa?threadID=629788&tstart=6360
回复

使用道具 举报

29

主题

196

帖子

168

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
145
发表于 2022-7-6 10:03:17 | 显示全部楼层
 
 
我对lisp了解不多。。。演示如下。。。我快速接近。。。有一次我做了一个lisp,用极坐标点快速修剪交点。。。
 
所以我想我今天也可以做类似的事情。。但我确实需要阅读更多关于它的内容。。。无论如何这是其他人完成它的开始。。。
 
键入storm1并选择2个点。。。它现在不能完全工作。。但肯定会有人修复它。
 
  1. ;will draw a single line composed of three lines, width is equal to 1
  2. ;base=1"
  3. ;it may contain extra code for any pipe size
  4. (defun C:storm1 ()
  5. (setq om (getvar "osmode"))
  6. (setq or (getvar "orthomode"))
  7. (setvar "cmdecho" 0)
  8. (setq p1 (getpoint "\nPick first point.. "))
  9. (setq p2 (getpoint "\nPick second point.. "))
  10. (setvar "osmode" 0)
  11. (setvar "orthomode" 0)
  12. (command "ucs" pt1 pt2 "")
  13. (setq p3 (polar p1 90 0.5))
  14. (setq p5 (polar p1 270 0.5))
  15. (setq p4 (polar p2 90 0.5))
  16. (setq p6 (polar p2 270 0.5))
  17. (command "line" p3 p4 "")
  18. (command "line" p5 p6 "")
  19. (command "_.-linetype" "load" "hidden2" (strcat "C:/archivos de programa/AutoCAD 2009/UserDataCache/Support/acad.lin") "" "")
  20. (command "_.-linetype" "set" "hidden2" "")
  21. (command "pline" p1 "W" "1" "1" p2 "")
  22. (command "_.-linetype" "set" "bylayer" "")
  23. (command "ucs" "w")
  24. (setvar "osmode" om)
  25. (setvar "orthomode" or)
  26. (setvar "cmdecho" 1)
  27. (princ)
  28. )


                               
登录/注册后可看大图
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:06:07 | 显示全部楼层
第二个代码PSD应该给你想要的。
 
  1. ;original coding taken from Pipe.lsp, created by Tim Wilson (9.11.95, revised 6.22.97)
  2. ;modified by alan thompson (11.18.08) for use at Capital Engineering and Surveying, Inc.
  3. ;    1. created 2 routines (SSD & PSD)
  4. ;        a. SSD will create an existing (Survey) storm pipe on the "V-STRM-PIPE" layer with a hidden2 linetype.
  5. ;           (if layer and/or linetype do not exist, they are created/loaded)
  6. ;        b. PSD will create a proposed (Engineering) storm pipe on the "C-STRM-PIPE" layer with a continuous linetype.
  7. ;           (if layer and/or linetype do not exist, they are created/loaded)
  8. ;    2. added error handler
  9. ;    3. removed unnecessary code, formatted and cleaned up code
  10. ;    4. localized subroutines
  11. ;thank you Tim Wilson for the borrowed coding.
  12. ;;Survey STORM
  13. (defun C:SSD (/ *error* DTR PNT1 PNT2 D D2 A ET HD L1 L2 L3 L4 OTM c_layer my_linfile my_layer my_color my_ltype )
  14. (vl-load-com)
  15. ;;;;;SUB ROUTINES;;;;;
  16. (defun *error* (msg)
  17. msg
  18. (setvar "clayer" c_layer)
  19. (setvar "orthomode" OTM)
  20. );defun
  21. (defun DTR (a)
  22. (* PI (/ A 180.0))
  23. )
  24. ;;;;;MAIN ROUTINE;;;;;
  25. (setq my_linfile "CES.lin")    ;linetype file to reference (if using default acad.lin, set as: nil)
  26. (setq my_layer "V-STRM-PIPE")    ;layer to use
  27. (setq my_color 172)        ;color to use
  28. (setq my_ltype "hidden2")    ;linetype to use
  29. (setq c_layer (getvar "clayer"))
  30. (setq OTM (getvar "orthomode"))
  31. (setvar "cmdecho" 0)
  32. (setvar "orthomode" 0)
  33. (if (and
  34.       (not (= my_linfile nil))
  35.       (findfile my_linfile)
  36.       (not (tblsearch "ltype" my_ltype))
  37.     );and
  38.      (vl-cmdf "_.linetype" "_l" my_ltype my_linfile "")
  39. );if
  40. (if (and
  41.       (setq PNT1 (getpoint "\nPick Start of Pipe: "))
  42.       (setq PNT2 (getpoint pnt1 "\nPick End of Pipe: "))
  43.       (setq D (getdist "\nEnter Pipe Width: ")) ;In INCHES IE 24", 30", 42" SO ON
  44.     );and
  45.       (progn
  46.         (if (tblsearch "layer" my_layer)
  47.           (vl-cmdf "_.layer" "_t" my_layer "_m" my_layer "_c" my_color my_layer "_lt" my_ltype my_layer "")
  48.           (vl-cmdf "_.layer" "_m" my_layer "_c" my_color my_layer "_lt" my_ltype my_layer "")
  49.         );if
  50.         (setq D2 (/ D 12))
  51.         (SETQ D D2)
  52.         (while Pnt2
  53.           (setq HD (/ D 2))
  54.           (setq A (angle PNT1 PNT2))
  55.           (setq ET (entlast))
  56.           (setq L1 (polar pnt1 (- a (dtr 90)) HD))
  57.           (setq L2 (polar pnt2 (- a (dtr 90)) HD))
  58.           (setq L3 (polar pnt1 (+ a (dtr 90)) HD))
  59.           (setq L4 (polar pnt2 (+ a (dtr 90)) HD))
  60.           (vl-cmdf "_.line" "_non" L1 "_non" L2 "" "_.line" "_non" L3 "_non" L4 "")
  61.           (setq PNT1 PNT2)
  62.           (setq PNT2 (getpoint PNT1 "\nNext Point: <Return or Enter to Quit> "))
  63.         );while
  64.         (setvar "clayer" c_layer)
  65.         (setvar "orthomode" OTM)
  66.       );progn
  67. );if
  68. (princ)
  69. );defun
  70. ;;Proposed STORM
  71. (defun C:PSD (/ *error DTR PNT1 PNT2 D D2 A ET HD L1 L2 L3 L4 OTM c_layer my_linfile my_layer my_color my_ltype my_ltype_mid )
  72. (vl-load-com)
  73. ;;;;;SUB ROUTINES;;;;;
  74. (defun *error* (msg)
  75. msg
  76. (setvar "clayer" c_layer)
  77. (setvar "orthomode" OTM)
  78. );defun
  79. (defun DTR (a)
  80. (* PI (/ A 180.0))
  81. )
  82. ;;;;;MAIN ROUTINE;;;;;
  83. (setq my_linfile nil)        ;linetype file to reference (if using default acad.lin, set as: nil)
  84. (setq my_layer "C-STRM-PIPE")    ;layer to use
  85. (setq my_color 2)        ;color to use
  86. (setq my_ltype "continuous")    ;linetype to use for exterior lines
  87. (setq my_ltype_mid "hidden")    ;linetype to use for interior line (pline with width of pipe)
  88. (setq c_layer (getvar "clayer"))
  89. (setq OTM (getvar "orthomode"))
  90. (setvar "cmdecho" 0)
  91. (setvar "orthomode" 0)
  92. ;load my_ltype
  93. (if (and
  94.       (not (= my_linfile nil))
  95.       (findfile my_linfile)
  96.       (not (tblsearch "ltype" my_ltype))
  97.     );and
  98.      (vl-cmdf "_.linetype" "_l" my_ltype my_linfile "")
  99. );if
  100. ;load my_ltype_mid
  101. (if (and
  102.       (not (= my_linfile nil))
  103.       (findfile my_linfile)
  104.       (not (tblsearch "ltype" my_ltype_mid))
  105.     );and
  106.      (vl-cmdf "_.linetype" "_l" my_ltype_mid my_linfile "")
  107. );if
  108. (if (and
  109.       (setq PNT1 (getpoint "\nPick Start of Pipe: "))
  110.       (setq PNT2 (getpoint PNT1 "\nPick End of Pipe: "))
  111.       (setq D (getdist "\nEnter Pipe Width: ")) ;In INCHES IE 24", 30", 42" SO ON
  112.     );and
  113.       (progn
  114.         (if (tblsearch "layer" my_layer)
  115.           (vl-cmdf "_.layer" "_t" my_layer "_m" my_layer "_c" my_color my_layer "_lt" my_ltype my_layer "")
  116.           (vl-cmdf "_.layer" "_m" my_layer "_c" my_color my_layer "_lt" my_ltype my_layer "")
  117.         );if
  118.         (setq D2 (/ D 12))
  119.         (setq D D2)
  120.         (while Pnt2
  121.            (setq HD (/ D 2))
  122.            (setq A (angle PNT1 PNT2))
  123.            (vl-cmdf "_.pline" "non" PNT1 "non" PNT2 "")
  124.            (setq ET (entlast))
  125.            (setq L1 (polar pnt1 (- a (dtr 90)) HD))
  126.            (setq L2 (polar pnt2 (- a (dtr 90)) HD))
  127.            (setq L3 (polar pnt1 (+ a (dtr 90)) HD))
  128.            (setq L4 (polar pnt2 (+ a (dtr 90)) HD))
  129.            (vl-cmdf "_.line" "non" L1 "non" L2 "" "line" "non" L3 "non" L4 "")
  130.            (vl-cmdf "_.change" ET "" "_p" "_lt" my_ltype_mid "") ;change linetype to suit
  131.            (vl-cmdf "_.pedit" ET "_w" D "")
  132.            (setq PNT1 PNT2)
  133.            (setq PNT2 (getpoint PNT1 "\nNext Point: <Return or Enter to Quit>: "))
  134.         );while
  135.       );progn
  136. );if
  137. (setvar "orthomode" OTM)
  138. (setvar "clayer" c_layer)
  139. (princ)
  140. );defun
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 01:51 , Processed in 0.344233 second(s), 75 queries .

© 2020-2025 乐筑天下

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