乐筑天下

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

[编程交流] 双线flex lisp

[复制链接]

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 19:11:01 | 显示全部楼层
提姆,
 
这是一个很酷的工具!
 
布拉德
回复

使用道具 举报

15

主题

209

帖子

121

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
163
发表于 2022-7-5 19:12:42 | 显示全部楼层
以下是后续内容。希望这对你有用。
 
  1. ;;; ------------------------------------------------------------------------
  2. ;;;    CreateFlex.lsp v1.2
  3. ;;;
  4. ;;;    Copyright © May, 2008
  5. ;;;    Timothy G. Spangler
  6. ;;;
  7. ;;;    Permission to use, copy, modify, and distribute this software
  8. ;;;    for any purpose and without fee is hereby granted, provided
  9. ;;;    that the above copyright notice appears in all copies and
  10. ;;;    that both that copyright notice and the limited warranty and
  11. ;;;    restricted rights notice below appear in all supporting
  12. ;;;    documentation.
  13. ;;;
  14. ;;;    THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED
  15. ;;;    WARRANTY. ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR
  16. ;;;    PURPOSE AND OF MERCHANTIBILITY ARE HEREBY DISCLAIMED BY THE
  17. ;;;    PROGRAMMER.
  18. ;;;
  19. ;;; -----------------------------------------------------------------------
  20. ;;; ------------ COMMAND LINE FUNCTIONS
  21. (defun c:FLEX (/)(FLEX_START))
  22. ;;; ------------ MAIN FUNCTION
  23. (defun FLEX_START (/ *error* OldCmdEcho OldOrthoMode OldOsmode OldLunits OldLunits OldFillMode
  24. ActiveDoc Space FlexSize FlexStart TrunkLine BlockName FlexEnd)
  25. ;;; Begin Error Handler -------------------------------------------------
  26. (defun *error* (MSG)         
  27. (if (not (member MSG '("Function cancelled" "quit / exit abort")))
  28.   (princ (strcat "\n*** Program Error: " (strcase MSG) " ***"))
  29.   (princ "\n... Program Cancelled ...")
  30. )
  31. (while (< 0 (getvar "cmdactive"))
  32.   (command)
  33. )
  34. (FLEX_RESET_ENV)
  35. )
  36. ;;; End Error Handler ---------------------------------------------------
  37. (FLEX_SET_ENV)
  38. )
  39. ;;; ------------ SETUP FLEXDUCT ENVIRONMENT SUB
  40. (defun FLEX_SET_ENV (/)
  41. ;; Set sysetm variable
  42. (setq OldCmdEcho (getvar "CMDECHO"))
  43. (setq OldOrthoMode (getvar "ORTHOMODE"))
  44. (setq OldOsmode (getvar "OSMODE"))
  45. (setq OldLunits (getvar "LUNITS"))
  46. (setq OldLuPrec (getvar "LUPREC"))
  47. (setq OldFillMode (getvar "FILLMODE"))
  48. (setvar "CMDECHO" 0)
  49. ;; Set undo marker
  50. (command "undo" "Begin")
  51. (setvar "ORTHOMODE" 0)
  52. (setvar "OSMODE" 514)
  53. (setvar "LUNITS" 2)
  54. (setvar "LUPREC" 4)
  55. (setvar "FILLMODE" 0)
  56. ;; Load VLISP funtionality
  57. (vl-load-com)
  58. ;; Set Vlisp Environment variables
  59. (setq ActiveDoc (vla-get-activedocument (vlax-get-acad-object)))
  60. (setq Space
  61. (if (= (getvar "cvport") 1)
  62.   (vla-get-paperspace ActiveDoc)
  63.   (vla-get-modelspace ActiveDoc)
  64. )
  65. )  
  66. ;; Run flex duct program
  67. (FLEX_RUN)
  68. )
  69. ;;; ------------ GET USER VARIABLES SUB
  70. (defun FLEX_RUN (/ FlexStart EndPoint FlexSize PlineEnt VLPlineObj VLPlineLength FlexDuct1 FlexDuct2
  71. FlexDuct1Pts FlexDuct2Pts FlexDuct3Pts FlexDuct4Pts FlexCap1 FlexCap2)
  72. (if (not (setq FlexSize (getreal "\n Enter flex size: <6"> ")))
  73. (setq FlexSize 6.0)
  74. )
  75. (FLEX_BLOCK FlexSize)
  76. (setq FlexStart (getpoint "\n Define flex start point: "))
  77. (setq FlexEnd (getpoint FlexStart "\n Define flex direction: "))
  78. (setq FlexEnd (polar FlexStart (angle FlexStart FlexEnd) 3.0))
  79. (command "_pline" FlexStart "width" FlexSize FlexSize FlexEnd "arc")
  80. (while (> (getvar "cmdactive") 0)
  81. (command PAUSE)
  82. )
  83. (setq PlineEnt (entget(entlast)))
  84. (setq VLPlineObj (vlax-ename->vla-object (cdr(assoc -1 PlineEnt))))
  85. (setq VLPlineLength (fix (vlax-get VLPlineObj 'length)))
  86. ;; Change width to 0  (all for astetics)
  87. (vlax-put VLPlineObj 'ConstantWidth 0.0)
  88. (setvar "FILLMODE" OldFillMode)
  89. ;; Add "flex" to duct
  90. (command "divide" (entlast) "block" BlockName "y" VLPlineLength)
  91. ;; Create flex duct sides
  92. (setq FlexDuct1 (car (vlax-invoke VLPlineObj 'offset (/ FlexSize 2))))
  93. (setq FlexDuct2 (car (vlax-invoke VLPlineObj 'offset (-(/ FlexSize 2)FlexSize))))
  94. ;; Get the end points of the sides
  95. (setq FlexDuct1Pts (vlax-curve-getEndPoint FlexDuct1))
  96. (setq FlexDuct2Pts (vlax-curve-getEndPoint FlexDuct2))
  97. (setq FlexDuct3Pts (vlax-curve-getStartPoint FlexDuct1))
  98. (setq FlexDuct4Pts (vlax-curve-getStartPoint FlexDuct2))
  99. (setq FlexDuct5Pts (vlax-curve-getEndPoint VLPlineObj))
  100. ;; Create caps
  101. (setq FlexCap2 (vlax-invoke space 'addline FlexDuct3Pts FlexDuct4Pts))
  102. (vlax-invoke space
  103. 'addarc
  104. FlexDuct5Pts
  105. (/ FlexSize 2)
  106. (angle FlexDuct2Pts FlexDuct1Pts)
  107. (angle FlexDuct1Pts FlexDuct2Pts)
  108. )
  109. (vla-delete VLPlineObj)
  110. (FLEX_RESET_ENV)
  111. )
  112. ;;; ------------ CREATE FLEX LINE BLOCK SUB - DOES NOT INSERT BLOCK
  113. (defun FLEX_BLOCK (FlexSize /)
  114. (setq OldLunits (getvar "LUNITS"))
  115. (setq OldLuPrec (getvar "LUPREC"))
  116. (setvar "LUNITS" 2)
  117. (setvar "LUPREC" 1)
  118. (setq BlockName (strcat "FLEX-" (rtos FlexSize 5 2)))
  119. (if (= (tblsearch "block" BlockName) nil)
  120. (progn
  121.   (entmake
  122.    (list
  123.     (cons 0 "BLOCK")
  124.     (cons 2 BlockName)
  125.     (cons 70 64)
  126.     (cons 10 (list 0.0 0.0 0.0))
  127.     (cons 8 "0")
  128.    )
  129.   )
  130.   (entmake
  131.    (list
  132.     (cons 0 "LINE")
  133.     (cons 10 (list 0.0 (- (/ FlexSize 2) FlexSize) 0.0))
  134.     (cons 11 (list 0.0 (/ FlexSize 2) 0.0))
  135.     (cons 8 "0")
  136.     (cons 62 9)
  137.    )
  138.   )
  139.   (entmake
  140.    '((0 . "ENDBLK"))
  141.   )
  142. )
  143. )
  144. (setvar "LUNITS" OldLunits)
  145. (setvar "LUPREC" OldLuPrec)
  146. BlockName
  147. )
  148. ;;; ------------ RESET SYSEM VARIABLES
  149. (defun FLEX_RESET_ENV (/)
  150. ;; Release ActiveX objects
  151. (vlax-release-object ActiveDoc)
  152. (vlax-release-object Space)
  153. ;; Reset system variables
  154. (setvar "ORTHOMODE" OldOrthoMode)
  155. (setvar "OSMODE" OldOsmode)
  156. (setvar "LUNITS" OldLunits)
  157. (setvar "LUPREC" OldLuPrec)
  158. ;; Reset undo marker
  159. (command "undo" "End")
  160. (setvar "CMDECHO" OldCmdEcho)
  161. (princ)
  162. )
  163. ;;;
  164. ;;; Echos to the command line
  165. (princ "\n CreateFlex v1.2© \n Timothy Spangler, \n  May, 2008....loaded.")
  166. (terpri)
  167. (princ "C:FLEX")
  168. (print)
  169. ;;; End echo
回复

使用道具 举报

2

主题

12

帖子

10

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 19:15:31 | 显示全部楼层
提姆,
那是猫屁股!!!!!!!
你是Lisp程序的国王!!!!!
大家好,蒂姆!!!!!
非常感谢,如果有什么我能做的,请告诉我。
 
你卑微的仆人
账单
回复

使用道具 举报

15

主题

209

帖子

121

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
163
发表于 2022-7-5 19:18:30 | 显示全部楼层
[脸红]
哦,你不是那个意思!
[/脸红]
 
很高兴我能帮忙!
回复

使用道具 举报

2

主题

12

帖子

10

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 19:23:09 | 显示全部楼层
提姆,
我现在可以开始卑躬屈膝了吗?
我想知道你是否可以采取最新的Lisp程序你发送和chande它终止在一个直端像以前一样?我需要不同扩散器连接的终端类型。您为我创建和修改的lisp是我们对绘图标准的最佳补充。我们每天都在为你签名。
 
永远欠你的债
账单
回复

使用道具 举报

15

主题

209

帖子

121

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
163
发表于 2022-7-5 19:26:27 | 显示全部楼层
选择端盖这个选项怎么样?
 
  1. ;;; ------------------------------------------------------------------------
  2. ;;;    CreateFlex.lsp v1.2
  3. ;;;
  4. ;;;    Copyright © May, 2008
  5. ;;;    Timothy G. Spangler
  6. ;;;
  7. ;;;    Permission to use, copy, modify, and distribute this software
  8. ;;;    for any purpose and without fee is hereby granted, provided
  9. ;;;    that the above copyright notice appears in all copies and
  10. ;;;    that both that copyright notice and the limited warranty and
  11. ;;;    restricted rights notice below appear in all supporting
  12. ;;;    documentation.
  13. ;;;
  14. ;;;    THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED
  15. ;;;    WARRANTY. ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR
  16. ;;;    PURPOSE AND OF MERCHANTIBILITY ARE HEREBY DISCLAIMED BY THE
  17. ;;;    PROGRAMMER.
  18. ;;;
  19. ;;; -----------------------------------------------------------------------
  20. ;;; ------------ COMMAND LINE FUNCTIONS
  21. (defun c:FLEX (/)(FLEX_START))
  22. ;;; ------------ MAIN FUNCTION
  23. (defun FLEX_START (/ *error* OldCmdEcho OldOrthoMode OldOsmode OldLunits OldLunits OldFillMode
  24. ActiveDoc Space FlexSize FlexStart TrunkLine BlockName FlexEnd)
  25. ;;; Begin Error Handler -------------------------------------------------
  26. (defun *error* (MSG)         
  27. (if (not (member MSG '("Function cancelled" "quit / exit abort")))
  28.   (princ (strcat "\n*** Program Error: " (strcase MSG) " ***"))
  29.   (princ "\n... Program Cancelled ...")
  30. )
  31. (while (< 0 (getvar "cmdactive"))
  32.   (command)
  33. )
  34. (FLEX_RESET_ENV)
  35. )
  36. ;;; End Error Handler ---------------------------------------------------
  37. (FLEX_SET_ENV)
  38. )
  39. ;;; ------------ SETUP FLEXDUCT ENVIRONMENT SUB
  40. (defun FLEX_SET_ENV (/)
  41. ;; Set sysetm variable
  42. (setq OldCmdEcho (getvar "CMDECHO"))
  43. (setq OldOrthoMode (getvar "ORTHOMODE"))
  44. (setq OldOsmode (getvar "OSMODE"))
  45. (setq OldLunits (getvar "LUNITS"))
  46. (setq OldLuPrec (getvar "LUPREC"))
  47. (setq OldFillMode (getvar "FILLMODE"))
  48. (setvar "CMDECHO" 0)
  49. ;; Set undo marker
  50. (command "undo" "Begin")
  51. (setvar "ORTHOMODE" 0)
  52. (setvar "OSMODE" 514)
  53. (setvar "LUNITS" 2)
  54. (setvar "LUPREC" 4)
  55. (setvar "FILLMODE" 0)
  56. ;; Load VLISP funtionality
  57. (vl-load-com)
  58. ;; Set Vlisp Environment variables
  59. (setq ActiveDoc (vla-get-activedocument (vlax-get-acad-object)))
  60. (setq Space
  61. (if (= (getvar "cvport") 1)
  62.   (vla-get-paperspace ActiveDoc)
  63.   (vla-get-modelspace ActiveDoc)
  64. )
  65. )  
  66. ;; Run flex duct program
  67. (FLEX_RUN)
  68. )
  69. ;;; ------------ GET USER VARIABLES SUB
  70. (defun FLEX_RUN (/ FlexStart EndPoint FlexSize PlineEnt VLPlineObj VLPlineLength FlexDuct1 FlexDuct2
  71. FlexDuct1Pts FlexDuct2Pts FlexDuct3Pts FlexDuct4Pts FlexDuct5Pts FlexCap1 FlexCap2 CloseOpt)
  72. (if (not (setq FlexSize (getreal "\n Enter flex size: <6"> ")))
  73. (setq FlexSize 6.0)
  74. )
  75. (FLEX_BLOCK FlexSize)
  76. (setq FlexStart (getpoint "\n Define flex start point: "))
  77. (setq FlexEnd (getpoint FlexStart "\n Define flex direction: "))
  78. (setq FlexEnd (polar FlexStart (angle FlexStart FlexEnd) 3.0))
  79. (command "_pline" FlexStart "width" FlexSize FlexSize FlexEnd "arc")
  80. (while (> (getvar "cmdactive") 0)
  81. (command PAUSE)
  82. )
  83. (setq PlineEnt (entget(entlast)))
  84. (setq VLPlineObj (vlax-ename->vla-object (cdr(assoc -1 PlineEnt))))
  85. (setq VLPlineLength (fix (vlax-get VLPlineObj 'length)))
  86. ;; Change width to 0  (all for astetics)
  87. (vlax-put VLPlineObj 'ConstantWidth 0.0)
  88. (setvar "FILLMODE" OldFillMode)
  89. ;; Add "flex" to duct
  90. (command "divide" (entlast) "block" BlockName "y" VLPlineLength)
  91. ;; Create flex duct sides
  92. (setq FlexDuct1 (car (vlax-invoke VLPlineObj 'offset (/ FlexSize 2))))
  93. (setq FlexDuct2 (car (vlax-invoke VLPlineObj 'offset (-(/ FlexSize 2)FlexSize))))
  94. ;; Get the end points of the sides
  95. (setq FlexDuct1Pts (vlax-curve-getEndPoint FlexDuct1))
  96. (setq FlexDuct2Pts (vlax-curve-getEndPoint FlexDuct2))
  97. (setq FlexDuct3Pts (vlax-curve-getStartPoint FlexDuct1))
  98. (setq FlexDuct4Pts (vlax-curve-getStartPoint FlexDuct2))
  99. (setq FlexDuct5Pts (vlax-curve-getEndPoint VLPlineObj))
  100. ;; Create caps
  101. (setq FlexCap2 (vlax-invoke space 'addline FlexDuct3Pts FlexDuct4Pts))
  102. ;; Check for losing option
  103. (initget 1 "Blunt Arched")
  104. (setq CloseOpt (getkword "\n Enter end condition: (Arched/Blunt)"))
  105. (if (= "Blunt" CloseOpt)
  106. (setq FlexCap1 (vlax-invoke space 'addline FlexDuct1Pts FlexDuct2Pts))
  107. (progn
  108.   (vlax-invoke space
  109.   'addarc
  110.    FlexDuct5Pts
  111.    (/ FlexSize 2)
  112.    (angle FlexDuct2Pts FlexDuct1Pts)
  113.    (angle FlexDuct1Pts FlexDuct2Pts)
  114.   )
  115. )
  116. )
  117. ;; Delete centerline
  118. (vla-delete VLPlineObj)
  119. (FLEX_RESET_ENV)
  120. )
  121. ;;; ------------ CREATE FLEX LINE BLOCK SUB - DOES NOT INSERT BLOCK
  122. (defun FLEX_BLOCK (FlexSize /)
  123. (setq OldLunits (getvar "LUNITS"))
  124. (setq OldLuPrec (getvar "LUPREC"))
  125. (setvar "LUNITS" 2)
  126. (setvar "LUPREC" 1)
  127. (setq BlockName (strcat "FLEX-" (rtos FlexSize 5 2)))
  128. (if (= (tblsearch "block" BlockName) nil)
  129. (progn
  130.   (entmake
  131.    (list
  132.     (cons 0 "BLOCK")
  133.     (cons 2 BlockName)
  134.     (cons 70 64)
  135.     (cons 10 (list 0.0 0.0 0.0))
  136.     (cons 8 "0")
  137.    )
  138.   )
  139.   (entmake
  140.    (list
  141.     (cons 0 "LINE")
  142.     (cons 10 (list 0.0 (- (/ FlexSize 2) FlexSize) 0.0))
  143.     (cons 11 (list 0.0 (/ FlexSize 2) 0.0))
  144.     (cons 8 "0")
  145.     (cons 62 9)
  146.    )
  147.   )
  148.   (entmake
  149.    '((0 . "ENDBLK"))
  150.   )
  151. )
  152. )
  153. (setvar "LUNITS" OldLunits)
  154. (setvar "LUPREC" OldLuPrec)
  155. BlockName
  156. )
  157. ;;; ------------ RESET SYSEM VARIABLES
  158. (defun FLEX_RESET_ENV (/)
  159. ;; Release ActiveX objects
  160. (vlax-release-object ActiveDoc)
  161. (vlax-release-object Space)
  162. ;; Reset system variables
  163. (setvar "ORTHOMODE" OldOrthoMode)
  164. (setvar "OSMODE" OldOsmode)
  165. (setvar "LUNITS" OldLunits)
  166. (setvar "LUPREC" OldLuPrec)
  167. ;; Reset undo marker
  168. (command "undo" "End")
  169. (setvar "CMDECHO" OldCmdEcho)
  170. (princ)
  171. )
  172. ;;;
  173. ;;; Echos to the command line
  174. (princ "\n CreateFlex v1.2© \n Timothy Spangler, \n  May, 2008....loaded.")
  175. (terpri)
  176. (princ "C:FLEX")
  177. (print)
  178. ;;; End echo
回复

使用道具 举报

2

主题

12

帖子

10

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 19:28:03 | 显示全部楼层
提姆,
我收到这个错误消息,然后flex直接终止。
“命令:
FLEXT公司
输入弹性尺寸:
定义弹性起点:
定义弯曲方向:
***程序错误:无函数定义:FLEX\u RESET\u ENV***;错误:错误
在*error*function内发生没有函数定义:FLEX\u RESET\u ENV
回复

使用道具 举报

2

主题

12

帖子

10

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 19:31:29 | 显示全部楼层
提姆,
我的错。弹性过大。lsp例程加载。太棒了!!!!
我将用我的一生在论坛的最高峰喊出你的名字!
 
账单
回复

使用道具 举报

15

主题

209

帖子

121

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
163
发表于 2022-7-5 19:36:34 | 显示全部楼层
很高兴听到你收到了。我打算建议重新复制代码,以确保您没有错过a(或a)。它每次都会抓住你。
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 19:39:40 | 显示全部楼层
蒂姆-
我已经看过你的双线flex的lisp例程了。它对我很有效,我非常喜欢。是否可以将外部线条修改为之字形,而不是曲线?有点难以解释,但希望你能理解。非常感谢-Dave
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 19:57 , Processed in 0.528612 second(s), 70 queries .

© 2020-2025 乐筑天下

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