乐筑天下

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

[编程交流] 将单线转换为双线

[复制链接]

5

主题

14

帖子

9

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 16:49:18 | 显示全部楼层 |阅读模式
你好
新年快乐
 
我正在寻找将选择线转换为双线的命令。选择线应在输入值的一半处偏移到两侧,选择线应删除。列表需要遵循以下方式
 
命令:
>选择行:
>线间距:
 
请支持我
阿比拉什
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 17:04:06 | 显示全部楼层
试试这个:
  1. (defun c:Test ( / ss of in sn )
  2. ;; Tharwat - 03.Jan.2017 ;;
  3. (if (and (setq ss (ssget "_:L" '((0 . "LINE"))))
  4.           (setq of (getdist "\nSpecify offset distance :"))
  5.           )
  6.    (while (setq sn (ssname ss 0))
  7.      (mapcar '(lambda (d)
  8.                 (vlax-invoke (vlax-ename->vla-object sn) 'offset (eval d)))
  9.        '((/ of 2.) (- (/ of 2.)))
  10.        )
  11.      (ssdel sn ss)
  12.      (entdel sn)
  13.      )
  14.    )
  15. (princ)
  16. ) (vl-load-com)
  17.       
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 17:13:23 | 显示全部楼层
在Vanilla AutoLisp中:
 
  1. [b][color=BLACK]([/color][/b]defun c:dline [b][color=FUCHSIA]([/color][/b]/ od hd ss i en ed p1 p2 an a9 lt tk cl[b][color=FUCHSIA])[/color][/b]
  2. [b][color=FUCHSIA]([/color][/b]initget 6[b][color=FUCHSIA])[/color][/b]
  3. [b][color=FUCHSIA]([/color][/b]setq od [b][color=NAVY]([/color][/b]getdist [b][color=MAROON]([/color][/b]strcat [color=#2f4f4f]"\nOffset Distance <"[/color] [b][color=GREEN]([/color][/b]rtos [b][color=BLUE]([/color][/b]getvar [color=#2f4f4f]"OFFSETDIST"[/color][b][color=BLUE])[/color][/b] 2 2[b][color=GREEN])[/color][/b] [color=#2f4f4f]">:  "[/color][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  4. [b][color=FUCHSIA]([/color][/b]or od [b][color=NAVY]([/color][/b]setq od [b][color=MAROON]([/color][/b]getvar [color=#2f4f4f]"OFFSETDIST"[/color][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  5. [b][color=FUCHSIA]([/color][/b]setq hd [b][color=NAVY]([/color][/b]* od 0.5[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  6. [b][color=FUCHSIA]([/color][/b]setvar [color=#2f4f4f]"OFFSETDIST"[/color] od[b][color=FUCHSIA])[/color][/b]
  7. [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]setq ss [b][color=MAROON]([/color][/b]ssget '[b][color=GREEN]([/color][/b][b][color=BLUE]([/color][/b]0 . [color=#2f4f4f]"LINE"[/color][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  8.         [b][color=NAVY]([/color][/b]setq i 0[b][color=NAVY])[/color][/b]
  9.         [b][color=NAVY]([/color][/b]while [b][color=MAROON]([/color][/b]setq en [b][color=GREEN]([/color][/b]ssname ss i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  10.                [b][color=MAROON]([/color][/b]setq ed [b][color=GREEN]([/color][/b]entget en[b][color=GREEN])[/color][/b]
  11.                      p1 [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 10 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  12.                      p2 [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 11 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  13.                      an [b][color=GREEN]([/color][/b]angle p1 p2[b][color=GREEN])[/color][/b]
  14.                      a9 [b][color=GREEN]([/color][/b]* pi 0.5[b][color=GREEN])[/color][/b]
  15.                      lt [b][color=GREEN]([/color][/b]if [b][color=BLUE]([/color][/b]assoc  6 ed[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]cdr [b][color=RED]([/color][/b]assoc  6 ed[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [color=#2f4f4f]"BYLAYER"[/color][b][color=GREEN])[/color][/b]
  16.                      tk [b][color=GREEN]([/color][/b]if [b][color=BLUE]([/color][/b]assoc 39 ed[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]cdr [b][color=RED]([/color][/b]assoc 39 ed[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] 0[b][color=GREEN])[/color][/b]
  17.                      cl [b][color=GREEN]([/color][/b]if [b][color=BLUE]([/color][/b]assoc 62 ed[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]cdr [b][color=RED]([/color][/b]assoc 62 ed[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] 256[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  18.                [b][color=MAROON]([/color][/b]entmake [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]assoc 0 ed[b][color=BLUE])[/color][/b]
  19.                               [b][color=BLUE]([/color][/b]cons 6 lt[b][color=BLUE])[/color][/b]
  20.                               [b][color=BLUE]([/color][/b]assoc 8 ed[b][color=BLUE])[/color][/b]
  21.                               [b][color=BLUE]([/color][/b]cons 10 [b][color=RED]([/color][/b]polar p1 [b][color=PURPLE]([/color][/b]+ an a9[b][color=PURPLE])[/color][/b] hd[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
  22.                               [b][color=BLUE]([/color][/b]cons 11 [b][color=RED]([/color][/b]polar p2 [b][color=PURPLE]([/color][/b]+ an a9[b][color=PURPLE])[/color][/b] hd[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
  23.                               [b][color=BLUE]([/color][/b]cons 39 tk[b][color=BLUE])[/color][/b]
  24.                               [b][color=BLUE]([/color][/b]cons 62 cl[b][color=BLUE])[/color][/b]
  25.                               [b][color=BLUE]([/color][/b]assoc 210 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  26.                [b][color=MAROON]([/color][/b]entmake [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]assoc 0 ed[b][color=BLUE])[/color][/b]
  27.                               [b][color=BLUE]([/color][/b]cons 6 lt[b][color=BLUE])[/color][/b]
  28.                               [b][color=BLUE]([/color][/b]assoc 8 ed[b][color=BLUE])[/color][/b]
  29.                               [b][color=BLUE]([/color][/b]cons 10 [b][color=RED]([/color][/b]polar p1 [b][color=PURPLE]([/color][/b]- an a9[b][color=PURPLE])[/color][/b] hd[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
  30.                               [b][color=BLUE]([/color][/b]cons 11 [b][color=RED]([/color][/b]polar p2 [b][color=PURPLE]([/color][/b]- an a9[b][color=PURPLE])[/color][/b] hd[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
  31.                               [b][color=BLUE]([/color][/b]cons 39 tk[b][color=BLUE])[/color][/b]
  32.                               [b][color=BLUE]([/color][/b]cons 62 cl[b][color=BLUE])[/color][/b]
  33.                               [b][color=BLUE]([/color][/b]assoc 210 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  34.                [b][color=MAROON]([/color][/b]entdel en[b][color=MAROON])[/color][/b]
  35.                [b][color=MAROON]([/color][/b]setq i [b][color=GREEN]([/color][/b]1+ i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  36. [b][color=FUCHSIA]([/color][/b]redraw[b][color=FUCHSIA])[/color][/b]
  37. [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 
 
-大卫
回复

使用道具 举报

5

主题

14

帖子

9

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 17:15:48 | 显示全部楼层
谢谢老板。。。。。它真正的支持。。。。它正在工作
回复

使用道具 举报

5

主题

14

帖子

9

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 17:31:16 | 显示全部楼层
尊敬的David Bethel和Tharwat
 
你的Lisp程序有效。两个lisp对我都很有用谢谢你的支持
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 17:33:56 | 显示全部楼层
很乐意帮忙-非常欢迎你。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 17:49:12 | 显示全部楼层
以下是另一种与平行于WCS平面的UCS平面兼容的方法:
  1. [color=GREEN];; Line to Double-Line  -  Lee Mac[/color]
  2. ([color=BLUE]defun[/color] c:l2dl ( [color=BLUE]/[/color] dis enx hed idx lst sel tmp vec )
  3.    ([color=BLUE]if[/color] ([color=BLUE]minusp[/color] ([color=BLUE]setq[/color] dis ([color=BLUE]getvar[/color] 'offsetdist))) ([color=BLUE]setq[/color] dis 1.0))
  4.    ([color=BLUE]initget[/color] 6)
  5.    ([color=BLUE]if[/color] ([color=BLUE]setq[/color] tmp ([color=BLUE]getdist[/color] ([color=BLUE]strcat[/color] [color=MAROON]"\nSpecify line separation <"[/color] ([color=BLUE]rtos[/color] dis) [color=MAROON]">: "[/color])))
  6.        ([color=BLUE]setvar[/color] 'offsetdist ([color=BLUE]setq[/color] dis tmp))
  7.    )
  8.    ([color=BLUE]setq[/color] dis ([color=BLUE]/[/color] dis 2.0))
  9.    ([color=BLUE]if[/color] ([color=BLUE]setq[/color] sel ([color=BLUE]ssget[/color] [color=MAROON]"_:L"[/color] '((0 . [color=MAROON]"LINE"[/color]))))
  10.        ([color=BLUE]repeat[/color] ([color=BLUE]setq[/color] idx ([color=BLUE]sslength[/color] sel))
  11.            ([color=BLUE]setq[/color] enx ([color=BLUE]entget[/color] ([color=BLUE]ssname[/color] sel ([color=BLUE]setq[/color] idx ([color=BLUE]1-[/color] idx))))
  12.                  hed ([color=BLUE]cons[/color] '(0 . [color=MAROON]"LINE"[/color]) (LM:defaultprops enx))
  13.                  lst ([color=BLUE]mapcar[/color] '([color=BLUE]lambda[/color] ( k ) ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] k enx))) '(10 11))
  14.                  vec ([color=BLUE]apply[/color] '[color=BLUE]mapcar[/color] ([color=BLUE]cons[/color] '[color=BLUE]-[/color] lst))
  15.                  lst ([color=BLUE]mapcar[/color] '([color=BLUE]lambda[/color] ( x ) ([color=BLUE]trans[/color] x 0 vec)) lst)
  16.            )
  17.            ([color=BLUE]repeat[/color] 2
  18.                ([color=BLUE]entmake[/color] ([color=BLUE]append[/color] hed ([color=BLUE]mapcar[/color] '([color=BLUE]lambda[/color] ( a b ) ([color=BLUE]cons[/color] a ([color=BLUE]trans[/color] ([color=BLUE]cons[/color] ([color=BLUE]+[/color] dis ([color=BLUE]car[/color] b)) ([color=BLUE]cdr[/color] b)) vec 0))) '(10 11) lst)))
  19.                ([color=BLUE]setq[/color] dis ([color=BLUE]-[/color] dis))
  20.            )
  21.            ([color=BLUE]entdel[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] -1 enx)))
  22.        )
  23.    )
  24.    ([color=BLUE]princ[/color])
  25. )
  26. [color=GREEN];; Default Properties  -  Lee Mac[/color]
  27. [color=GREEN];; Returns a list of DXF properties for the supplied DXF data,[/color]
  28. [color=GREEN];; substituting default values for absent DXF groups[/color]
  29. ([color=BLUE]defun[/color] LM:defaultprops ( enx )
  30.    ([color=BLUE]mapcar[/color] '([color=BLUE]lambda[/color] ( x ) ([color=BLUE]cond[/color] (([color=BLUE]assoc[/color] ([color=BLUE]car[/color] x) enx)) ( x )))
  31.       '(
  32.            (006 . [color=MAROON]"BYLAYER"[/color])
  33.            (008 . [color=MAROON]"0"[/color])
  34.            (039 . 0.0)
  35.            (048 . 1.0)
  36.            (062 . 256)
  37.            (370 . -1)
  38.        )
  39.    )
  40. )
  41. ([color=BLUE]princ[/color])
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:56:24 | 显示全部楼层
这是我们一直在为预设尺寸做的事情。
 
  1. ; pipe offset for different size pipes
  2. ; by Alan H July 2014
  3. (vl-load-com)
  4. (defun existLinetype (LineTypeName / item loaded)
  5. (setq  doc (vla-get-activedocument (vlax-get-acad-object))) ; open database
  6. (vlax-for item (vla-get-linetypes doc)
  7.    (if (= (strcase (vla-get-name item)) (strcase LineTypeName))
  8.      (setq loaded T)
  9.    )  
  10. )
  11. (if (= Loaded T)
  12.    (princ "loaded")
  13.    (command "-linetype" "L" LineTypeName "P:\\AUTODESK\\SUPPORTFILES\\CUSTOM.LIN" "")
  14. )
  15. )
  16. (existLinetype "EX_PIPE250")
  17. (defun pipeoffset (w / ang stpt pt3 pt4 obj whatis)
  18. (setq oldsnap (getvar "osmode"))
  19. (setvar "osmode" 0)
  20. (setq obj (entsel "\nPick line"))
  21. (setq objtype (vla-get-objectname (vlax-ename->vla-object (car obj))))
  22. (if (= "AcDbLINE" objtype)
  23. (progn
  24.     (alert "You have picked an object which is not a line\nTry Again")
  25.     (exit)
  26. )
  27. (princ "\nLine")
  28. )
  29. (setq stpt (assoc 10 (entget (car obj))))
  30. (setq stpt (list (nth 1 stpt)(nth 2 stpt)))
  31. (setq endpt (assoc 11 (entget (car obj))))
  32. (setq endpt (list (nth 1 endpt)(nth 2 endpt)))
  33. (setq ang (angle stpt endpt))
  34. (setq pt3 (polar stpt (+ ang (/ pi 2.0)) 1.0))
  35. (setq pt4 (polar stpt (- ang (/ pi 2.0)) 1.0))
  36. (command "offset" w obj pt3 "")
  37. (Command "chprop" "last" "" "LT" "EX_PIPE250" "")
  38. (command "offset" w obj pt4 "")
  39. (Command "chprop" "last" "" "LT" "EX_PIPE250" "")
  40. (command "Erase" obj "")
  41. (setvar "osmode" oldsnap)
  42. )
  43. (defun c:P100 ()
  44. (pipeoffset 0.06)
  45. )
  46. (defun c:P150 ()
  47. (pipeoffset 0.08)
  48. )
  49. (defun c:P225 ()
  50. (pipeoffset 0.152)
  51. )
  52. (defun c:P300 ()
  53. (pipeoffset 0.19)
  54. )
  55. (defun c:P375 ()
  56. (pipeoffset 0.228)
  57. )
  58. (defun c:P450 ()
  59. (pipeoffset 0.265)
  60. )
  61. (defun c:P525 ()
  62. (pipeoffset 0.308)
  63. )
  64. (defun c:P600 ()
  65. (pipeoffset 0.35)
  66. )
  67. (defun c:P675 ()
  68. (pipeoffset 0.39)
  69. )
  70. (defun c:P750 ()
  71. (pipeoffset 0.432)
  72. )
  73. (defun c:P825 ()
  74. (pipeoffset 0.473)
  75. )
  76. (defun c:P900 ()
  77. (pipeoffset 0.515)
  78. )
  79. (defun c:P975 ()
  80. (pipeoffset 0.528)
  81. )
  82. (defun c:P1050 ()
  83. (pipeoffset 0.597)
  84. )
  85. (defun c:P1125 ()
  86. (pipeoffset 0.6)
  87. )
  88. (defun c:P1200 ()
  89. (pipeoffset 0.68)
  90. )
  91. (princ)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 14:10 , Processed in 0.491905 second(s), 68 queries .

© 2020-2025 乐筑天下

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