乐筑天下

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

[编程交流] 按选择集名称选择,

[复制链接]

30

主题

96

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
150
发表于 2022-7-6 09:44:18 | 显示全部楼层
好啊谢谢大家的回复。。。如果我在我想做的事情上成功了,我一定会发布代码。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 09:47:46 | 显示全部楼层
 
不要忘记本地化变量。
回复

使用道具 举报

30

主题

96

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
150
发表于 2022-7-6 09:48:53 | 显示全部楼层
 
当然谢谢Tharwat。。。。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:53:26 | 显示全部楼层
下面是一个供您考虑的程序harilalmn,它使用了我在之前的帖子中描述的方法。
 
你自己试试看吧
 
  1. ;; Scroll down after you have tried to write it yourself   ;-)
  2. (defun c:stairs ( / _line a1 a2 go no p0 p1 p2 wi )
  3.    (defun _line  ( p1 p2 )
  4.        (entmakex (list (cons 0 "LINE") (cons 10 p1) (cons 11 p2)))
  5.    )
  6.    (if
  7.        (and
  8.            (setq p0 (getpoint "\nSpecify First Point: "))
  9.            (setq a1 (getangle "\nSpecify Stair Angle: " p0))
  10.            (setq wi (getdist  "\nSpecify Stair Width: "))
  11.            (progn
  12.                (initget 6)
  13.                (setq no (getint "\nSpecify Number of Stairs: "))
  14.            )
  15.            (setq go (getdist "\nGoing: " p0))
  16.        )
  17.        (progn
  18.            (setq p0 (trans p0 1 0)
  19.                  p1 (polar p0 (+ a1 (/ pi 2.0)) (/ wi 2.0))
  20.                  a2 (- a1 (/ pi 2.0))
  21.            )
  22.            (repeat (1+ no)
  23.                (_line p1 (polar p1 a2 0.05))
  24.                (_line    (polar p1 a2 0.1) (polar p1 a2 (- wi 0.1)))
  25.                (_line    (polar p1 a2 (- wi 0.05)) (polar p1 a2 wi))
  26.                (setq  p1 (polar p1 a1 go))
  27.            )
  28.            (setq p1 (polar p0 a2 (- (/ wi 2.0) 0.1)))
  29.            (repeat 2
  30.                (setq p2 (polar p1 a2 0.05))
  31.                (entmakex
  32.                    (list
  33.                        (cons 0 "LWPOLYLINE")
  34.                        (cons 100 "AcDbEntity")
  35.                        (cons 100 "AcDbPolyline")
  36.                        (cons 90 4)
  37.                        (cons 70 1)
  38.                        (cons 10 (polar p1 a1 (+ (* no go) 0.2)))
  39.                        (cons 10 (polar p2 a1 (+ (* no go) 0.2)))
  40.                        (cons 10 (polar p2 a1 -0.2))
  41.                        (cons 10 (polar p1 a1 -0.2))
  42.                    )
  43.                )
  44.                (setq p1 (polar p1 a2 (- 0.15 wi)))
  45.            )
  46.        )
  47.    )
  48.    (princ)
  49. )
回复

使用道具 举报

30

主题

96

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
150
发表于 2022-7-6 09:56:51 | 显示全部楼层
谢谢李。。,我有一个很好的开始。。。
回复

使用道具 举报

30

主题

96

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
150
发表于 2022-7-6 10:02:42 | 显示全部楼层
大家好,
最后有东西在工作。。。!!!
它需要图形中的四个层。
 
A-ANNO-TEXT(文本)
A-ANNO-DIMS(尺寸)
A-FLOR-HRAL(扶手)
A-DETL-HIDN(隐藏线)
 
假设文字和尺寸标注是注释性的。
 
我知道你们会有太多的评论。。。等待。。!!!
  1. (defun c:str()
  2. (vl-load-com)
  3. (setq CURRENTLAYER (getvar "CLAYER"))
  4. (setq OSM (getvar "OSMODE"))
  5. (setq CuttingAt 1.2)
  6. (setq C1(getpoint "\nStair Start Point:"))
  7. (setq C2(getpoint C1 "\nStair End Point:"))
  8. (setq width 1.0)
  9. (setq tread 0.3)
  10. (setq rise 0.15)
  11. (setq FH 3.0)
  12. (setq HOfst 0.05)
  13. (setq HOvhg 0.20)
  14. (setq HThik 0.05)
  15. (setq info (strcat "\nStair Width : " (rtos Width)))
  16. (setq info (strcat info ", Tread : " (rtos tread)))
  17. (setq info (strcat info ", Rise : " (rtos Rise)))
  18. (setq info (strcat info ", Floor Height : " (rtos FH)))
  19. (setq info (strcat info ", Handrail Offset : " (rtos HOfst)))
  20. (setq info (strcat info ", Handrail Overhang : " (rtos HOvhg)))
  21. (setq info (strcat info ", Handrail Thickness : " (rtos HThik)))
  22. (prompt info)
  23. (textscr)
  24. (initget 1 "Yes No")
  25. (setq ConfirmInfo (getkword "\nDo you want to change these default stair properties? (Yes or No):"))
  26. (textscr)
  27. (if
  28. (eq ConfirmInfo "Yes")
  29. (progn
  30. (setq Width(getdist "\nWidth:<1.00>"))
  31. (if (null Width) (setq Width 1.00))
  32. (setq info (strcat "\nStair Width : " (rtos Width)))
  33.   
  34. (setq tread(getdist "\nTread:<0.30>"))
  35. (if (null tread) (setq tread 0.30))
  36. (setq info (strcat info ", Tread : " (rtos tread)))
  37. (setq Rise(getdist "\nRise:<0.15>"))
  38. (if (null Rise) (setq Rise 0.15))
  39. (setq info (strcat info ", Rise : " (rtos Rise)))
  40. (setq FH(getdist "\nFloor Height:<3.00>"))
  41. (if (null FH) (setq FH 3.00))
  42. (setq info (strcat info ", Floor Height : " (rtos FH)))
  43. (setq HOfst(getdist "\nHandrail Offset:<0.05>"))
  44. (if (null HOfst) (setq HOfst 0.05))
  45. (setq info (strcat info ", Handrail Offset : " (rtos HOfst)))
  46. (setq HOvhg(getdist "\nHandrail Overhang:<0.25>"))
  47. (if (null HOvhg) (setq HOvhg 0.25))
  48. (setq info (strcat info ", Handrail Overhang : " (rtos HOvhg)))
  49. (setq HThik(getdist "\nHandrail Thickness:<0.05>"))
  50. (if (null HThik) (setq HThik 0.05))
  51. (setq info (strcat info ", Handrail Thickness : " (rtos HThik)))
  52. (prompt info)
  53. );Progn
  54. );If
  55. (initget 1 "Yes No")
  56. (setq Confirm (getkword "\nIs it the first flight? (Yes or No):"))
  57. (setq HalfWidth (/ Width 2))
  58. (setq NumberOfSteps(Round (/ FH Rise)))
  59. (setq Dir(Angle C1 C2))
  60. (setq s1 (polar c1 (+ (Getper Dir) (dtor 180)) HalfWidth))
  61. (setq s2 (polar s1 (Getper Dir) HOfst))
  62. (setq s3 (polar s2 (Getper Dir) HThik))
  63. (setq s4 (polar s3 (Getper Dir) (* (- HalfWidth (distance s1 s3))2)))
  64. (setq s5 (polar s4 (Getper Dir) HThik))
  65. (setq s6 (polar s5 (Getper Dir) HOfst))
  66. (setq DimOuter (polar s1 (+ (dtor 180) dir) (* 4 tread)))
  67. (setq DimClear (polar s1 (+ (dtor 180) dir) (* 2 tread)))
  68. (setvar "OSMODE" 0)
  69. (command "-DIMSTYLE" "R" "Annotative")
  70. (setvar "CLAYER" "A-ANNO-DIMS")
  71. (command "_DIMALIGNED" s1 s6 DimOuter)
  72. (command "_DIMALIGNED" s3 s4 DimClear)
  73. (if
  74.    (eq Confirm "Yes")
  75.    (setvar "CLAYER" "A-FLOR-STRS")
  76.    (setvar "CLAYER" "A-DETL-HIDN")
  77. );If
  78. (if
  79.    (eq Confirm "Yes")
  80.    (progn
  81.      (setq ContRisers (fix (/ CuttingAt rise)))
  82.      (setq HrLengthCont(+ HOvhg (* (- ContRisers 1) tread)))
  83.      (setq ha1 (polar s4 (+ (dtor 180) dir) HOvhg))
  84.      (setq ha2 (polar s5 (+ (dtor 180) dir) HOvhg))
  85.      (setq ha3 (polar ha1 dir HrLengthCont))
  86.      (setq ha4 (polar ha2 dir HrLengthCont))
  87.      (setq hb1 (polar s2 (+ (dtor 180) dir) HOvhg))
  88.      (setq hb2 (polar s3 (+ (dtor 180) dir) HOvhg))
  89.      (setq hb3 (polar hb1 dir HrLengthCont))
  90.      (setq hb4 (polar hb2 dir HrLengthCont))
  91.      (setvar "CLAYER" "A-FLOR-HRAL")
  92.      (command "_LINE" ha4 ha2 ha1 ha3 "")
  93.      (command "_LINE" hb4 hb2 hb1 hb3 "")
  94.      (setq Outer1 s1)
  95.      (setq Outer2 (polar s1 dir (* (- ContRisers 1) tread)))
  96.      (setq Outer3 s6)
  97.      (setq Outer4 (polar s6 dir (* (- ContRisers 1) tread)))
  98.      (command "_LINE" Outer1 Outer2 "")
  99.      (command "_LINE" Outer3 Outer4 "")
  100.      
  101.      (setq HrLength(+ (* 2 HOvhg) (* (- NumberOfSteps 1) tread)))
  102.      (setq RLength (- HrLength HrLengthCont))
  103.      (setq ha1 (polar ha4 dir RLength))
  104.      (setq ha2 (polar ha3 dir RLength))
  105.      (setq hb1 (polar hb4 dir RLength))
  106.      (setq hb2 (polar hb3 dir RLength))
  107.      (setvar "CLAYER" "A-DETL-HIDN")
  108.      (command "_LINE" ha4 ha1 ha2 ha3 "")
  109.      (command "_LINE" hb4 hb1 hb2 hb3 "")
  110.      (setq Outer1 Outer2)
  111.      (setq Outer2 (polar Outer1 dir (- (* NumberOfSteps tread) (* ContRisers tread))))
  112.      (setq Outer3 Outer4)
  113.      (setq Outer4 (polar Outer3 dir (- (* NumberOfSteps tread) (* ContRisers tread))))
  114.    
  115.      (command "_LINE" Outer1 Outer2 "")
  116.      (command "_LINE" Outer3 Outer4 "")
  117.    );Progn
  118.    (progn
  119.      (setq HrLength(+ (* 2 HOvhg) (* (- NumberOfSteps 1) tread)))
  120.      (setq ha1 (polar s4 (+ (dtor 180) dir) HOvhg))
  121.      (setq ha2 (polar s5 (+ (dtor 180) dir) HOvhg))
  122.      (setq ha3 (polar ha1 dir HrLength))
  123.      (setq ha4 (polar ha2 dir HrLength))
  124.      (setq hb1 (polar s2 (+ (dtor 180) dir) HOvhg))
  125.      (setq hb2 (polar s3 (+ (dtor 180) dir) HOvhg))
  126.      (setq hb3 (polar hb1 dir HrLength))
  127.      (setq hb4 (polar hb2 dir HrLength))
  128.      (setvar "CLAYER" "A-DETL-HIDN")
  129.      (command "_LINE" ha4 ha2 ha1 ha3 "CLOSE")
  130.      (command "_LINE" hb4 hb2 hb1 hb3 "CLOSE")
  131.      (setq Outer1 s1)
  132.      (setq Outer2 (polar Outer1 dir (* (- NumberOfSteps 1) tread)))
  133.      (setq Outer3 s6)
  134.      (setq Outer4 (polar Outer3 dir (* (- NumberOfSteps 1) tread)))
  135.      (command "_LINE" Outer1 Outer2 "")
  136.      (command "_LINE" Outer3 Outer4 "")
  137.    );progn
  138. );If
  139. (setq n 1)
  140. (if
  141.    (eq Confirm "Yes")
  142.      (setq Counter 1)
  143.      (setq Counter (getint "\nStair Number starts from:"))
  144. );if
  145. (repeat NumberOfSteps
  146.    (if
  147.      (eq confirm "Yes")
  148.      (progn
  149. (if
  150.   (> (* n Rise) 1.2)
  151.   (setvar "CLAYER" "A-DETL-HIDN")
  152.   (setvar "CLAYER" "A-FLOR-STRS")
  153. );if
  154.      );progn
  155.      (setvar "CLAYER" "A-DETL-HIDN")
  156.    );If
  157.    (command "_LINE" s1 s2 "")
  158.    (command "_LINE" s3 s4 "")
  159.    (command "_LINE" s5 s6 "")
  160.    
  161.    (setq t1pnt (MidOf S3 S4))
  162.    (setq ip (MidOf s3 s4))
  163.    (setq txtht (getvar "TEXTSIZE"))
  164.    (setq txt (itoa Counter))
  165.    (entmake (list '(0 . "TEXT") '(8 . "A-ANNO-TEXT") '(7 . "Annotative - Note" ) (cons 1 txt) (cons 10 t1pnt)(cons 40 txtht)))
  166.    (setq txtobj (vlax-ename->vla-object (entlast)))
  167.    (setq RealVal (/ (vlax-get-property txtobj "Height") (getvar "CANNOSCALEVALUE")))
  168.    (vlax-put-property txtobj "Height" RealVal)
  169.    (command "CHPROP" "L" "" "A" "Y" "")
  170.    (setq s1 (polar s1 dir tread))
  171.    (setq s2 (polar s2 dir tread))
  172.    (setq s3 (polar s3 dir tread))
  173.    (setq s4 (polar s4 dir tread))
  174.    (setq s5 (polar s5 dir tread))
  175.    (setq s6 (polar s6 dir tread))
  176.    (setq n (1+ n))
  177.    (setq Counter (1+ Counter))
  178. );Repeat
  179. (if
  180.    (eq confirm "Yes")
  181.      (setvar "CLAYER" "A-FLOR-HRAL")
  182.      (setvar "CLAYER" "A-DETL-HIDN")
  183. );if
  184. (setvar "CLAYER" CURRENTLAYER)
  185. (setvar "OSMODE" OSM)
  186. );Function
  187. (defun Getper (ang)
  188. (+ (dtor 90) ang)
  189. )
  190. (defun dtor (degree)
  191. (* 0.0174532925 degree)
  192. )
  193. (defun Round (Value)
  194. (if
  195.    (>= (- Value (fix Value)) 0.5)
  196.    (1+ (fix Value))
  197.    (fix Value)
  198. )
  199. )
  200. (defun MidOf(p1 p2)
  201. (polar p1 (angle p1 p2) (/ (distance p1 p2) 2))
  202. )
  203. (defun rtod (r)
  204. (* r 57.2957795)
  205. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 06:30 , Processed in 0.530300 second(s), 62 queries .

© 2020-2025 乐筑天下

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