乐筑天下

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

[编程交流] 帮助需要绘制此符号

[复制链接]

27

主题

146

帖子

119

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
137
发表于 2022-7-5 22:32:06 | 显示全部楼层 |阅读模式
嗨,伙计们
我的英语很差,所以上传图片进行解释。
 
在曲线上绘制圆弧。(直线、直线、圆、圆弧、椭圆)
 
可以指定起点和终点
 
还有一些选择。
233209nmuomui180pzt8yz.png
 
两种类型
类型1
类型2
 
方向,使用对话框选择
 
如果选择type1,那么可以使用“鼠标手势”来选择曲线的哪一侧。
 
宽度和间距,例如宽度=2,间距=1
 
弧度(%)
也可以固定。这样地:
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-5 22:39:32 | 显示全部楼层
安迪,
 
从表面上看,这个程序已经被其他人完成了,你的帖子上的pix是从哪里来的?
回复

使用道具 举报

27

主题

146

帖子

119

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
137
发表于 2022-7-5 22:46:33 | 显示全部楼层
 
尊敬的pBe。
没有见过类似的应用。我使用ODCL和PS绘制该对话框。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-5 22:50:09 | 显示全部楼层
 
你让我在那里,安迪,聪明。
 
也许过会儿我会去看看
回复

使用道具 举报

27

主题

146

帖子

119

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
137
发表于 2022-7-5 22:53:19 | 显示全部楼层
 
哈哈。别开玩笑了。
如果有人能帮忙。我会很高兴的。
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 22:59:05 | 显示全部楼层
如果我们用圆弧手工制作一个块
然后
命令:测量

命令:分割
对的
你能澄清弧度百分比吗?
回复

使用道具 举报

27

主题

146

帖子

119

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
137
发表于 2022-7-5 23:05:49 | 显示全部楼层
 
谢谢你的回复,我的朋友韩。
 
弧度这并不重要。可以这样替换:
 
为什么需要制作积木?我认为可以使用
entmake创建。
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 23:09:16 | 显示全部楼层
 
您误解了,如果使用命令手动(不编码)测量(带块),
是的,entmake是在多段线对齐中操作的编码的一部分
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-5 23:14:56 | 显示全部楼层
 
这可能会奏效,也许可以使用动态块
回复

使用道具 举报

27

主题

146

帖子

119

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
137
发表于 2022-7-5 23:20:12 | 显示全部楼层
嗨,我的朋友韩。
可能参考此例程
http://bbs.mjtd.com/thread-101300-1-1.html
  1. [color=#000000](defun C:SM (/ A AN AN0 BASEPT BETWEEN BOOL CURVEBLOCK CURVELENGTH DISTANC EN FIRSTPOINT LASTB LASTBLIST LASTBLOCK N PP PT PT0 SSADD1 STRIN TRIN VT)[/color]
  2. [color=#000000]  (defun *error* (msg)[/color]
  3. [color=#000000]    (vl-bt)[/color]
  4. [color=#000000]    (if[/color][color=#000000]        [/color][color=#000000]*DOC*[/color]
  5. [color=#000000]      (_EndUndo *DOC*)[/color][color=#000000]        [/color][color=#000000]        [/color][color=#000000]        [/color]
  6. [color=#000000]    )[/color]
  7. [color=#000000]    (while (not (equal (getvar "cmdnames") "")) (command nil))[/color]
  8. [color=#000000]    (princ "\n Error!")[/color]
  9. [color=#000000]    (princ)[/color]
  10. [color=#000000]  )[/color]
  11. [color=#000000]  (defun stratpointT (en pt0 / CURVELENGTH L1)[/color]
  12. [color=#000000]    (setq CurveLength[/color]
  13. [color=#000000]        [/color][color=#000000]   (vlax-curve-getDistAtParam[/color]
  14. [color=#000000]        [/color][color=#000000]     en[/color]
  15. [color=#000000]        [/color][color=#000000]     (vlax-curve-getEndParam en)[/color]
  16. [color=#000000]        [/color][color=#000000]   )[/color]
  17. [color=#000000]    )[/color]
  18. [color=#000000]    (setq L1 (vlax-curve-getDistAtPoint en pt0))[/color]
  19. [color=#000000]    (< L1 (- CurveLength L1))[/color]
  20. [color=#000000]  )[/color]
  21. [color=#000000]  (defun NAME_BLK (CurveLength / A Y)[/color]
  22. [color=#000000]    (setq A (rtos (* (getvar "CDATE") 1E8)))[/color]
  23. [color=#000000]    (setq Y (/ CurveLength 5.0))[/color]
  24. [color=#000000]    (entmake (list '(0 . "LINE")[/color]
  25. [color=#000000]        [/color][color=#000000]        [/color][color=#000000]   (cons 10 (list 0 0 0))[/color]
  26. [color=#000000]        [/color][color=#000000]        [/color][color=#000000]   (cons 11 (list 0 y 0))[/color]
  27. [color=#000000]        [/color][color=#000000]     )[/color]
  28. [color=#000000]    )[/color]
  29. [color=#000000]    (command "_.BLOCK"[/color]
  30. [color=#000000]        [/color][color=#000000]     A[/color]
  31. [color=#000000]        [/color][color=#000000]     "non"[/color]
  32. [color=#000000]        [/color][color=#000000]     (list 0 (/ y 2.0) 0)[/color]
  33. [color=#000000]        [/color][color=#000000]     (entlast)[/color]
  34. [color=#000000]        [/color][color=#000000]     ""[/color]
  35. [color=#000000]    )[/color]
  36. [color=#000000]    A[/color]
  37. [color=#000000]  )[/color]
  38. [color=#000000]  (defun MyAttAdd (en n / ELIST N1 N3 NEND QIANZ STREND TEXT)[/color]
  39. [color=#000000]    (setq elist (entget (entnext en)))[/color]
  40. [color=#000000]    (setq text (cdr (assoc 1 elist)))[/color]
  41. [color=#000000]    (setq n3 (strlen text))[/color][color=#000000]        [/color][color=#000000]        [/color][color=#000000]        [/color][color=#000000]  [/color]
  42. [color=#000000]    (setq strEND (getNumberS text))[/color][color=#000000]        [/color][color=#000000]        [/color][color=#000000] [/color]
  43. [color=#000000]    (setq Nend (nth (1- (length strEND)) strEND))[/color]
  44. [color=#000000]    (setq n1 (strlen Nend))[/color][color=#000000]        [/color][color=#000000]        [/color][color=#000000]        [/color][color=#000000]  [/color]
  45. [color=#000000]    (setq qianZ (substr text 1 (- n3 n1)))[/color][color=#000000]        [/color][color=#000000]  [/color]
  46. [color=#000000]    (setq strEND (+ (atof (car strEND)) n))[/color][color=#000000]        [/color][color=#000000]  [/color]
  47. [color=#000000]    (setq strEND (strcat qianZ (rtos strEND 2 3)))[/color]
  48. [color=#000000]    (entmod (subst (cons 1 strEND) (assoc 1 elist) elist))[/color]
  49. [color=#000000]    (entupd en)[/color]
  50. [color=#000000]   [/color]
  51. [color=#000000]  )[/color]
  52. [color=#000000]  (defun MyTextAdd (en n / ELIST N1 N3 NEND QIANZ STREND TEXT)[/color]
  53. [color=#000000]    (setq elist (entget en))[/color]
  54. [color=#000000]    (setq text (cdr (assoc 1 elist)))[/color]
  55. [color=#000000]    (setq n3 (strlen text))[/color][color=#000000]        [/color][color=#000000]        [/color][color=#000000]        [/color][color=#000000] [/color]
  56. [color=#000000]    (setq strEND (getNumberS text))[/color][color=#000000]        [/color][color=#000000]        [/color][color=#000000]  [/color]
  57. [color=#000000]    (setq Nend (nth (1- (length strEND)) strEND))[/color]
  58. [color=#000000]    (setq n1 (strlen Nend))[/color][color=#000000]        [/color][color=#000000]        [/color][color=#000000]        [/color][color=#000000]  [/color]
  59. [color=#000000]    (setq qianZ (substr text 1 (- n3 n1)))[/color][color=#000000]        [/color][color=#000000]  [/color]
  60. [color=#000000]    (setq strEND (+ (atof (car strEND)) n))[/color][color=#000000]        [/color][color=#000000]  [/color]
  61. [color=#000000]    (setq strEND (strcat qianZ (rtos strEND 2 3)))[/color]
  62. [color=#000000]    (entmod (subst (cons 1 strEND) (assoc 1 elist) elist))[/color]
  63. [color=#000000]  )[/color]
  64. [color=#000000] [/color]
  65. [color=#000000]  (vl-load-com)[/color]
  66. [color=#000000]  (or *DOC*[/color]
  67. [color=#000000]      (setq *DOC* (vla-get-ActiveDocument (vlax-get-acad-object)))[/color]
  68. [color=#000000]  )[/color]
  69. [color=#000000]  (_StartUndo *DOC*)[/color]
  70. [color=#000000]  (setvar "nomutt" 1)[/color]
  71. [color=#000000]  (princ "\n >Select the curve")[/color]
  72. [color=#000000]  (while (not[/color]
  73. [color=#000000]        [/color][color=#000000]   (and[/color][color=#000000]        [/color][color=#000000](setq en (ssget ":E:S" '((0 . "*LINE,ARC,ELLIPSE"))))[/color]
  74. [color=#000000]        [/color][color=#000000]        [/color][color=#000000](setq en (ssname en 0))[/color]
  75. [color=#000000]        [/color][color=#000000]   )[/color]
  76. [color=#000000]        [/color][color=#000000] )[/color]
  77. [color=#000000]    (princ "\n >Re select the curve")[/color]
  78. [color=#000000]  )[/color]
  79. [color=#000000]  (setvar "nomutt" 0)[/color]
  80. [color=#000000]  (setq pt0 (vlax-curve-getClosestPointTo en (cadr (grread T )))[/color]
  81. [color=#000000]  [/color]
  82. [color=#000000]  (setq[/color][color=#000000]        [/color][color=#000000]CurveLength[/color]
  83. [color=#000000]        [/color][color=#000000] (vlax-curve-getDistAtParam[/color]
  84. [color=#000000]        [/color][color=#000000]   en[/color]
  85. [color=#000000]        [/color][color=#000000]   (vlax-curve-getEndParam en)[/color]
  86. [color=#000000]        [/color][color=#000000] )[/color]
  87. [color=#000000]  )[/color]
  88. [color=#000000]  (setq[/color][color=#000000]        [/color][color=#000000]curveBlock[/color]
  89. [color=#000000]        [/color][color=#000000] (car (ENTSEL "\n ..>>Select the arrangement of objects along:"))[/color]
  90. [color=#000000]  )[/color]
  91. [color=#000000]  (if curveBlock[/color]
  92. [color=#000000]    nil[/color]
  93. [color=#000000]    (progn (setq A (NAME_BLK CurveLength))[/color]
  94. [color=#000000]        [/color][color=#000000]   (command "_.INSERT" A "@" "" "" "")[/color]
  95. [color=#000000]        [/color][color=#000000]   (setq lastblock (entlast))[/color]
  96. [color=#000000]        [/color][color=#000000]   (setq curveBlock lastblock)[/color]
  97. [color=#000000]    )[/color]
  98. [color=#000000]  )[/color]
  99. [color=#000000]  (setq an0 (entget curveBlock))[/color][color=#000000]        [/color][color=#000000]  [/color]
  100. [color=#000000]  (setq basePt (cdr (assoc 10 an0)))[/color]
  101. [color=#000000]  (setq an0 (cdr (assoc 50 an0)))[/color][color=#000000]        [/color][color=#000000]  [/color]
  102. [color=#000000]  [/color]
  103. [color=#000000]  (setq bool T)[/color]
  104. [color=#000000]  (setq[/color][color=#000000]        [/color][color=#000000]strin (strcat "\n ...>>>The length of the curve"[/color]
  105. [color=#000000]        [/color][color=#000000]        [/color][color=#000000]      (rtos CurveLength 2 3)[/color]
  106. [color=#000000]        [/color][color=#000000]        [/color][color=#000000]      ",Enter the spacing: "[/color]
  107. [color=#000000]        [/color][color=#000000]      )[/color]
  108. [color=#000000]  )[/color]
  109. [color=#000000]  (while bool[/color]
  110. [color=#000000]    (initget 7)[/color]
  111. [color=#000000]    (setq between (getreal strin))[/color]
  112. [color=#000000]    (if[/color][color=#000000]        [/color][color=#000000](> between CurveLength)[/color]
  113. [color=#000000]      (progn (setq bool T) (alert "Object spacing must be smaller than the curve length!!!"))[/color]
  114. [color=#000000]      (setq bool nil)[/color]
  115. [color=#000000]    )[/color]
  116. [color=#000000]  )[/color]
  117. [color=#000000]  (initget 4)[/color]
  118. [color=#000000]  (setq strin (rtos (/ (rem CurveLength between) 2.0) 2 3))[/color]
  119. [color=#000000]  (setq[/color]
  120. [color=#000000]    distanc (getreal[/color]
  121. [color=#000000]        [/color][color=#000000]      (strcat "\n ....>>>>The spacing of first object & Curve endpoint<" strin ">:")[/color]
  122. [color=#000000]        [/color][color=#000000]    )[/color]
  123. [color=#000000]  )[/color]
  124. [color=#000000]  (if distanc[/color]
  125. [color=#000000]    nil[/color]
  126. [color=#000000]    (setq distanc (/ (rem CurveLength between) 2.0))[/color]
  127. [color=#000000]  )[/color]
  128. [color=#000000] [/color]
  129. [color=#000000]  (setq n (fix (/ (- CurveLength distanc) between)))[/color]
  130. [color=#000000]  (if (stratpointT en pt0)[/color]
  131. [color=#000000]    (setq firstPoint distanc)[/color]
  132. [color=#000000]    (setq firstPoint (rem (- CurveLength distanc) between))[/color]
  133. [color=#000000]  )[/color]
  134. [color=#000000]  (setq ssadd1 (ssadd))[/color]
  135. [color=#000000]  (repeat (setq n (1+ n))[/color]
  136. [color=#000000]    (setq pt (vlax-curve-getPointAtDist en firstPoint)[/color]
  137. [color=#000000]        [/color][color=#000000]  pp (vlax-curve-getParamAtPoint en Pt)[/color][color=#000000]        [/color][color=#000000]  [/color]
  138. [color=#000000]        [/color][color=#000000]  vt (vlax-curve-getFirstDeriv en pp)[/color][color=#000000]        [/color][color=#000000] [/color]
  139. [color=#000000]        [/color][color=#000000]  an (angle '(0 0 0) vt)[/color][color=#000000]        [/color][color=#000000]        [/color][color=#000000] [/color]
  140. [color=#000000]    )[/color]
  141. [color=#000000]    (command "._copy" curveBlock "" "non" basePt "non" PT)[/color]
  142. [color=#000000]    (setq LastB (entlast))[/color]
  143. [color=#000000]    (setq LastBList (entget LastB))[/color]
  144. [color=#000000]    (cond ((assoc 66 LastBList) (MyAttAdd LastB (setq n (1- n))))[/color]
  145. [color=#000000]        [/color][color=#000000]  ((equal (cdr (assoc 0 LastBList)) "TEXT")[/color]
  146. [color=#000000]        [/color][color=#000000]   (MyTextAdd LastB (setq n (1- n)))[/color]
  147. [color=#000000]        [/color][color=#000000]  )[/color]
  148. [color=#000000]    )[/color]
  149. [color=#000000]    ;;(entmod (subst (cons 50 an) (assoc 50 LastBList) LastBList))[/color]
  150. [color=#000000]    (command "_.rotate" LastB "" "non" pt (/ (* 180 (- an an0)) pi))[/color]
  151. [color=#000000]    (setq ssadd1 (ssadd LastB ssadd1))[/color]
  152. [color=#000000]    (setq firstPoint (+ firstPoint between))[/color]
  153. [color=#000000]  )[/color]
  154. [color=#000000]  (if lastblock[/color]
  155. [color=#000000]    (command "._erase" lastblock "")[/color]
  156. [color=#000000]    (progn (initget "R  ")[/color]
  157. [color=#000000]        [/color][color=#000000]   (setq trin[/color]
  158. [color=#000000]        [/color][color=#000000]        [/color][color=#000000]  (getstring "\nTo block rotated 180 degrees, input R<Enter>")[/color]
  159. [color=#000000]        [/color][color=#000000]   )[/color]
  160. [color=#000000]        [/color][color=#000000]   (if (or (equal trin "R") (equal trin "r"))[/color]
  161. [color=#000000]        [/color][color=#000000]     (repeat (setq n (sslength ssadd1))[/color]
  162. [color=#000000]        [/color][color=#000000]       (setq LastB (ssname ssadd1 (setq n (1- n))))[/color]
  163. [color=#000000]        [/color][color=#000000]       (setq LastBList (entget LastB))[/color]
  164. [color=#000000]        [/color][color=#000000]       (setq an (cdr (assoc 50 LastBList)))[/color]
  165. [color=#000000]        [/color][color=#000000]       (setq an (+ an pi))[/color]
  166. [color=#000000]        [/color][color=#000000]       (entmod (subst (cons 50 an) (assoc 50 LastBList) LastBList))[/color]
  167. [color=#000000]        [/color][color=#000000]     )[/color]
  168. [color=#000000]        [/color][color=#000000]   )[/color]
  169. [color=#000000]    )[/color]
  170. [color=#000000]  )[/color]
  171. [color=#000000]  (_EndUndo *DOC*)[/color]
  172. [color=#000000]  (princ)[/color]
  173. [color=#000000])[/color]
  174. [color=#000000](defun _StartUndo (*DOC*)[/color]
  175. [color=#000000]  (_EndUndo *DOC*)[/color]
  176. [color=#000000]  (vla-StartUndoMark *DOC*)[/color]
  177. [color=#000000])[/color]
  178. [color=#000000](defun _EndUndo[/color][color=#000000]        [/color][color=#000000](*DOC*)[/color]
  179. [color=#000000]  (if (= 8 (logand 8 (getvar 'UNDOCTL)))[/color]
  180. [color=#000000]    (vla-EndUndoMark *DOC*)[/color]
  181. [color=#000000]  )[/color]
  182. [color=#000000])[/color]
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 06:09 , Processed in 0.520507 second(s), 75 queries .

© 2020-2025 乐筑天下

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