乐筑天下

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

[编程交流] LISP例程开发square

[复制链接]

77

主题

298

帖子

232

银币

后起之秀

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

铜币
394
发表于 2022-7-5 22:50:22 | 显示全部楼层 |阅读模式
嘿伙计们,
 
我们目前正在办公室做一些降落伞工作,需要开发一些弯曲/折板工作。我们花费时间最多的项目似乎是方形到圆形的过渡段,其中斜槽壁由一个板制成,折叠成所需的形状。
 
我相信你们大多数人都熟悉这种类型的工作,但我只是想知道是否有人知道一个好的程序,可以轻松地产生这些过渡段的发达/扁平板。
 
我们一直在使用这个网站。。。http://www.sheetmetalguy.com/transition.htm...当它工作时,它确实工作得很好(看起来这个网站很旧,有时只会在IE中运行)。
 
所以我在想,如果有一个例程,要求用户选择一个二维正方形/矩形和一个二维圆形,那就太好了。。。该例程将计算两个形状之间的距离(Z值),然后生成所需形状的二维平坦轮廓。
 
有人知道这样的例行公事吗?
 
我确实有一点Lisp程序的经验,但我想像这样的事情可能会涉及我的头。
 
非常感谢您的帮助。
 
干杯
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 22:54:37 | 显示全部楼层
试试这个。。。
 
关于,
M、 R。
回复

使用道具 举报

22

主题

272

帖子

254

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
111
发表于 2022-7-5 22:58:38 | 显示全部楼层
代码最终修订-您可以在第#7。。。
 
当做
M、 R。
回复

使用道具 举报

MMS

6

主题

28

帖子

22

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-5 23:02:38 | 显示全部楼层
哇,太棒了。。。非常感谢Marko。
 
我不得不删除这行。。。
 
  1. ;; Program Bentangan Ducting Transisi Kotak ke Lingkaran
  2. ;; DR2C Beta Version 0.0
  3. ;; Program ini hanya bekerja untuk 4 segment
  4. ;; Dibuat                 : Afrizanirman
  5. ;; Email                 : udaaf@yahoo.co.id
  6. ;; Tgl Pembuatan        : 15/3/2012
  7. ;; Tangent  -  Lee Mac
  8. ;; Args: x - real
  9. (defun tan ( x )
  10.    (if (not (equal 0.0 (cos x) 1e-10))
  11.        (/ (sin x) (cos x))
  12.    )
  13. )
  14. ;; ArcSine  -  Lee Mac
  15. ;; Args: -1 <= x <= 1
  16. (defun asin ( x )
  17.    (cond
  18.        (   (equal (abs x) 1.0 1e-10)
  19.            (* x pi 0.5)
  20.        )
  21.        (   (< -1.0 x 1.0)
  22.            (atan x (sqrt (- 1.0 (* x x))))
  23.        )
  24.    )
  25. )
  26. ;; ArcCosine  -  Lee Mac
  27. ;; Args: -1 <= x <= 1
  28. (defun acos ( x )
  29.    (cond
  30.        (   (equal x  1.0 1e-10)
  31.            0.0
  32.        )
  33.        (   (equal x -1.0 1e-10)
  34.            pi
  35.        )
  36.        (   (< -1.0 x 1.0)
  37.            (atan (sqrt (- 1.0 (* x x))) x)
  38.        )
  39.    )
  40. )
  41. ;; Hyperbolic Sine  -  Lee Mac
  42. ;; Args: x - real
  43. (defun sinh ( x )
  44.    (/ (- (exp x) (exp (- x))) 2.0)
  45. )
  46. ;; Hyperbolic Cosine  -  Lee Mac
  47. ;; Args: x - real
  48. (defun cosh ( x )
  49.    (/ (+ (exp x) (exp (- x))) 2.0)
  50. )
  51. ;; Hyperbolic Tangent  -  Lee Mac
  52. ;; Args: x - real
  53. (defun tanh ( x )
  54.    (/ (sinh x) (cosh x))
  55. )
  56. ;; Area Hyperbolic Sine  -  Lee Mac
  57. ;; Args: x - real
  58. (defun asinh ( x )
  59.    (log (+ x (sqrt (1+ (* x x)))))
  60. )
  61. ;; Area Hyperbolic Cosine  -  Lee Mac
  62. ;; Args: 1 <= x
  63. (defun acosh ( x )
  64.    (if (<= 1.0 x)
  65.        (log (+ x (sqrt (1- (* x x)))))
  66.    )
  67. )
  68. ;; Area Hyperbolic Tangent  -  Lee Mac
  69. ;; Args: -1 < x < 1
  70. (defun atanh ( x )
  71.    (if (< (abs x) 1.0)
  72.        (/ (log (/ (1+ x) (- 1.0 x))) 2.0)
  73.    )
  74. )
  75. ;convert degree to radian
  76. (defun DTR (x)
  77. (* PI (/ x 180.0))
  78. );defun
  79. ;Global Variable untuk mengkonversi radian ke dalam degree
  80. (defun RTD (x)
  81. (* x (/ 180.0 PI))
  82. );defun
  83. (defun c:DR2C ()
  84. (setq oldOsmode (getvar "OSMODE"))
  85. ;Setting nilai default H1 = 200 mm
  86. (setq oldH1 200)
  87. (if (= (setq H1 (getreal (strcat "Masukan Nilai Awal H1" "<"(rtos oldH1)">"))) nil)
  88. (setq H1 oldH1)
  89. (setq H1 H1)
  90. );end if
  91. ;Setting nilai default H2 = 150 mm
  92. (setq oldH2 150)
  93. (if (= (setq H2 (getreal (strcat "Masukan Nilai Awal H2" "<"(rtos oldH2)">"))) nil)
  94. (setq H2 oldH2)
  95. (setq H2 H2)
  96. );end if
  97. ;Setting nilai default V1 = 150 mm
  98. (setq oldV1 150)
  99. (if (= (setq V1 (getreal (strcat "Masukan Nilai Awal V1" "<"(rtos oldV1)">"))) nil)
  100. (setq V1 oldV1)
  101. (setq V1 V1)
  102. );end if
  103. ;Mencari nilai PQ
  104. (setq PV V1
  105.      VQ (/ (- H1 H2) 2)
  106.      PQ (sqrt (+(expt PV 2) (expt VQ 2)))
  107.      ); end setq
  108. ;Mencari nilai DQ
  109. (setq PD (/ H1 2)
  110.      DQ (sqrt (+(expt PQ 2) (expt PD 2)))
  111.      )
  112. ;Mencari nilai Db
  113. (setq P0 (/ H1 2)
  114.      PD (/ H1 2)
  115.      b0 (/ H2 2)
  116.      Db (- (sqrt (+ (expt P0 2) (expt PD 2))) b0)
  117.      );setq
  118. ;Mencari nilai ne
  119. (setq de Db
  120.      dn V1
  121.      ne (sqrt (+ (expt de 2) (expt dn 2)))
  122.      );setq
  123. ;Mencari panjang busur bc
  124. (setq C (/ 90.0 4)
  125.      r (/ H2 2)
  126.      bc (* 2 r (sin (/ (DTR c) 2)))
  127.      );setq
  128. ;Mencari panjang rusuk Dc dengan mencari panjang ec, eb terlebih dahulu
  129. (setq xc (* r (sin(DTR C)))
  130.      bx (sqrt (- (expt bc 2) (expt xc 2)))
  131.      Dx (+ Db bx)
  132.      Dc (sqrt (+ (expt xc 2) (expt Dx 2)))
  133.      );setq
  134. ;Mencari nilai nf
  135. (setq df Dc
  136.      nf (sqrt (+ (expt df 2) (expt dn 2)))
  137.      );setq
  138. ;Mencari panjang nilai Betha1
  139. (setq UQ bc
  140.      DU nf
  141.      CosB (/ (-(+ (expt DU 2) (expt DQ 2)) (expt UQ 2)) (* 2 DU DQ))
  142.      Betha1 (acos CosB)
  143.      );setq
  144. ;Mencari panjang nilai Betha2
  145. (setq WU bc
  146.      DW ne
  147.      CosB2 (/ (-(+ (expt DW 2) (expt DU 2)) (expt WU 2)) (* 2 DW DU))
  148.      Betha2 (acos CosB2)
  149.      );setq
  150. ;Membuat Point Bentangan
  151. (setq AD H1
  152.      PT0 (getpoint "\nTentukan Titik Peletakan:")
  153.      PT2 (polar PT0 (DTR 0.0) (/ AD 2))
  154.      PT3 (polar PT0 (DTR 90.0) PQ)
  155.      PT1 (polar PT0 (DTR 180.0) (/ AD 2))
  156.      );setq
  157. (setq alpha (asin (/ PQ DQ)))
  158. (setq PT4 (polar PT1 (+ alpha betha1) DU))
  159. (setq PT5 (polar PT1 (+ alpha betha1 betha2) DW))
  160. (setq PT6 (polar PT1 (+ alpha betha1 betha2 betha2) DU))
  161. (setq PT7 (polar PT1 (+ alpha betha1 betha2 betha2 Betha1) DQ))
  162. ;Membuat Object Segitiga dan rusuk
  163.   (setvar "OSMODE" 0)
  164. (command "LINE" PT1 PT2 PT3 "C")
  165. (command "LINE" PT1 PT4 "")
  166. (command "LINE" PT1 PT5 "")
  167. (command "LINE" PT1 PT6 "")
  168. (command "LINE" PT1 PT7 "")
  169. (setvar "OSMODE" oldOsmode)
  170. (princ)
  171. );defun
  172. (Princ)
  173.          
  174.      
  175.      
  176.      

 
由于我无法运行例程(就像我尝试清空DWG一样),例程仍然认为DWG中存在实体。
 
DWG必须为空有特殊原因吗?当DWG中没有形状可以拾取点时,我只能手动输入值-我可以尝试写入一两行,这将允许例程在屏幕上作为对象时运行-但在例程进行时将其删除。
 
再次感谢你的帮助。
回复

使用道具 举报

MMS

6

主题

28

帖子

22

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-5 23:06:56 | 显示全部楼层
我希望DWG为空的原因是例程末尾的这些行。。。
 
  1. ;; 2-Circle Intersection  -  Lee Mac
  2. ;; Returns the point(s) of intersection between two circles
  3. ;; with centres c1,c2 and radii r1,r2
  4. (defun LM:Inters2Circle ( c1 r1 c2 r2 / n d1 x z )
  5.    (if
  6.        (and
  7.            (< (setq d1 (distance c1 c2)) (+ r1 r2))
  8.            (< (abs (- r1 r2)) d1)
  9.        )
  10.        (progn
  11.            (setq n  (mapcar '- c2 c1)
  12.                  c1 (trans c1 0 n)
  13.                  z  (/ (- (+ (* r1 r1) (* d1 d1)) (* r2 r2)) (+ d1 d1))
  14.            )
  15.            (if (equal z r1 1e-
  16.                (list (trans (list (car c1) (cadr c1) (+ (caddr c1) z)) n 0))
  17.                (progn
  18.                    (setq x (sqrt (- (* r1 r1) (* z z))))
  19.                    (list
  20.                        (trans (list (- (car c1) x) (cadr c1) (+ (caddr c1) z)) n 0)
  21.                        (trans (list (+ (car c1) x) (cadr c1) (+ (caddr c1) z)) n 0)
  22.                    )
  23.                )
  24.            )
  25.        )
  26.    )
  27. )
  28. (defun mid (p1 p2)
  29. (mapcar '(lambda (a b) (/ (+ a b) 2.0)) p1 p2)
  30. )
  31. (defun c:rectround ( / AP ARCENT CMDE D DD DIA ENPAR HIG INCRPAR K LEN OSM P1 P1O P2 P2O P3 PT PTE PTLST PTM PTO PTOO PTTT RAD RECENT REG SEG SOL SS STPAR WID )
  32. (vl-load-com)
  33. (if (not (vl-catch-all-error-p (vl-catch-all-apply 'sslength (list (ssget "_X"))))) (progn (alert "\nWarning DWG contains entities - there must be no entities - exiting") (exit)))
  34. (vl-cmdf "_.ucs" "w")
  35. (vl-cmdf "_.plan" "")
  36. (vl-cmdf "_.zoom" "c" '(0.0 0.0 0.0) 1.0)
  37. (vl-cmdf "_.zoom" "v")
  38. (setq osm (getvar 'osmode))
  39. (setq cmde (getvar 'cmdecho))
  40. (setq ap (getvar 'aperture))
  41. (setvar 'aperture 25)
  42. (setvar 'cmdecho 0)
  43. (setvar 'osmode 0)
  44. (vl-cmdf "osnap" "off")
  45. ;  (vl-cmdf "_.align")
  46. (arxload "geom3d.arx") ; initialize (align) subfunction
  47. (prompt "\nRECTROUND TRANSITION ROUTINE - ENTER TO CONTINUE")
  48. (vl-cmdf pause)
  49. (setq dia (getdist "\nInput diameter of Round (pick 2 points) : "))
  50. (setq rad (/ dia 2.0))
  51. (setq len (getdist "\nInput length of rectangle (pick 2 points) : "))
  52. (setq wid (getdist "\nInput width of rectangle (pick 2 points) : "))
  53. (setq hig (getdist "\nInput height of transition (pick 2 points) : "))
  54. (initget 6)
  55. (setq seg (getint "\nInput number of segemnts per vertex of rectangle : "))
  56. (vl-cmdf "_.arc" "c" (list 0.0 0.0 hig) (list rad 0.0 hig) (list 0.0 rad hig))
  57. (if (> (getvar 'cmdactive) 0) (vl-cmdf ""))
  58. (setq arcent (entlast))
  59. (setq stpar (vlax-curve-getparamatpoint arcent (list rad 0.0 hig)))
  60. (setq enpar (vlax-curve-getparamatpoint arcent (list 0.0 rad hig)))
  61. (setq incrpar (/ (- enpar stpar) (float seg)))
  62. (setq k -1)
  63. (repeat (+ seg 1)
  64.    (setq pt (vlax-curve-getpointatparam arcent (+ stpar (* (float (setq k (1+ k))) incrpar))))
  65.    (setq ptlst (cons pt ptlst))
  66. )
  67. (setq ptlst (reverse ptlst))
  68. (cond
  69.    ((and (equal rad (/ len 2.0) 1e- (equal rad (/ wid 2.0) 1e-)
  70.    (vl-cmdf "_.rectangle" '(0.0 0.0 0.0) (list rad rad 0.0))
  71.    (if (> (getvar 'cmdactive) 0) (vl-cmdf ""))
  72.    )
  73.    ((or (and (> rad (/ len 2.0)) (> rad (/ wid 2.0))) (and (equal rad (/ len 2.0) 1e- (> rad (/ wid 2.0))) (and (> rad (/ len 2.0)) (equal rad (/ wid 2.0) 1e-))
  74.    (vl-cmdf "_.pline" '(0.0 0.0 0.0) (list rad 0.0 0.0) "a" "s" (list (* (sqrt 0.5) rad) (* (sqrt 0.5) rad) 0.0) (list 0.0 rad 0.0) "l" "c")
  75.    )
  76.    ((or (and (< rad (/ len 2.0)) (< rad (/ wid 2.0))) (and (equal rad (/ len 2.0) 1e- (< rad (/ wid 2.0))) (and (< rad (/ len 2.0)) (equal rad (/ wid 2.0) 1e-))
  77.    (vl-cmdf "_.rectangle" '(0.0 0.0 0.0) (list (/ len 2.0) (/ wid 2.0) 0.0))
  78.    (if (> (getvar 'cmdactive) 0) (vl-cmdf ""))
  79.    )
  80.    ((and (> rad (/ len 2.0)) (< rad (/ wid 2.0)))
  81.    (vl-cmdf "_.rectangle" '(0.0 0.0 0.0) (list rad (/ wid 2.0) 0.0))
  82.    (if (> (getvar 'cmdactive) 0) (vl-cmdf ""))
  83.    )
  84.    ((and (< rad (/ len 2.0)) (> rad (/ wid 2.0)))
  85.    (vl-cmdf "_.rectangle" '(0.0 0.0 0.0) (list (/ len 2.0) rad 0.0))
  86.    (if (> (getvar 'cmdactive) 0) (vl-cmdf ""))
  87.    )
  88. )
  89. (vl-cmdf "_.extrude" (entlast) "" hig)
  90. (setq sol (entlast))
  91. (vl-cmdf "_.slice" sol "" "3" (list (/ len 2.0) 0.0 0.0) (list (/ len 2.0) (/ wid 2.0) 0.0) (car ptlst) '(0.0 0.0 0.0))
  92. (setq k -1)
  93. (repeat seg
  94.    (vl-cmdf "_.slice" sol "" "3" (nth (setq k (1+ k)) ptlst) (nth (+ k 1) ptlst) (list (/ len 2.0) (/ wid 2.0) 0.0) '(0.0 0.0 0.0))
  95. )  
  96. (vl-cmdf "_.slice" sol "" "3" (list 0.0 (/ wid 2.0) 0.0) (list (/ len 2.0) (/ wid 2.0) 0.0) (last ptlst) '(0.0 0.0 0.0))
  97. (vl-cmdf "_.mirror" sol "" '(0.0 0.0 0.0) '(0.0 1.0 0.0) "")
  98. (setq ss (ssadd))
  99. (ssadd sol ss)
  100. (ssadd (entlast) ss)
  101. (vl-cmdf "_.union" ss "")
  102. (setq sol (entlast))
  103. (vl-cmdf "_.mirror" sol "" '(1.0 0.0 0.0) '(0.0 0.0 0.0) "")
  104. (setq ss (ssadd))
  105. (ssadd sol ss)
  106. (ssadd (entlast) ss)
  107. (vl-cmdf "_.union" ss "")
  108. (entdel arcent)
  109. (vl-cmdf "_.copybase" '(0.0 0.0 0.0) (entlast) "")
  110. (vl-cmdf "_.slice" (entlast) "" "ZX" '(0.0 0.0 0.0) '(1.0 1.0 0.0))
  111. (vl-cmdf "_.slice" (entlast) "" "YZ" '(0.0 0.0 0.0) '(1.0 1.0 0.0))
  112. (vl-cmdf "_.explode" (entlast) "")
  113. (setq ss (ssget "_C" '(1.0 -1.0 0.0) '(-1.0 1.0 0.0)))
  114. (vl-cmdf "_.erase" ss "")
  115. (vl-cmdf "_.vpoint" "-1.0,-1.0,1.0")
  116. (setq pt (list 0.0 (+ (/ wid 2.0) (distance (list 0.0 (/ wid 2.0) 0.0) (list 0.0 rad hig))) 0.0))
  117. (setq ss (ssget "_C" (list -0.1 (- (/ wid 2.0) 0.1) 0.0) (list 0.1 (+ (/ wid 2.0) 0.1) 0.0)))
  118. (vl-cmdf "_.ucs" "e" (list 0.0 (/ wid 2.0) 0.0))
  119. (vl-cmdf "_.explode" ss "")
  120. (vl-cmdf "_.pedit" "l" "" "j" "p" "" "")
  121. (vl-cmdf "_.ucs" "w")
  122. (setq ss (ssget "_L"))
  123. (align ss (list 0.0 (/ wid 2.0) 0.0) (list 0.0 (/ wid 2.0) 0.0) (list (/ len 2.0) (/ wid 2.0) 0.0) (list (/ len 2.0) (/ wid 2.0) 0.0) (list 0.0 rad hig) pt)
  124. (setq k -1)
  125. (setq ptlst (reverse ptlst))
  126. (setq d (distance (nth 0 ptlst) (nth 1 ptlst)))
  127. (repeat seg
  128.    (setq dd (distance (list (/ len 2.0) (/ wid 2.0) 0.0) (nth (+ (setq k (1+ k)) 1) ptlst)))
  129.    (setq pto pt)
  130.    (setq pt (car (LM:Inters2Circle (list (/ len 2.0) (/ wid 2.0) 0.0) dd pto d)))
  131.    (setq pt (list (car pt) (cadr pt) 0.0))
  132.    (setq ss (ssget (mid (setq ptoo (osnap (nth k ptlst) "_non")) (setq pttt (osnap (nth (+ k 1) ptlst) "_non")))))
  133.    (align ss (list (/ len 2.0) (/ wid 2.0) 0.0) (list (/ len 2.0) (/ wid 2.0) 0.0) ptoo pto pttt pt)
  134.    (vl-cmdf "_.ucs" "e" pt)
  135.    (vl-cmdf "_.explode" ss "")
  136.    (vl-cmdf "_.pedit" "l" "" "j" "p" "" "")
  137.    (vl-cmdf "_.ucs" "w")
  138.    (setq ss (ssget "_L"))
  139.    (align ss (setq p1 (osnap (setq p1o (cdr (assoc 10 (entget (ssname ss 0))))) "_end")) (list (car p1) (cadr p1) 0.0) (setq p2 (osnap (setq p2o (cdr (assoc 10 (cdr (member (list 10 (car p1o) (cadr p1o)) (entget (ssname ss 0))))))) "_end")) (list (car p2) (cadr p2) 0.0) (setq p3 (osnap (cdr (assoc 10 (cdr (member (list 10 (car p2o) (cadr p2o)) (entget (ssname ss 0)))))) "_end")) (list (car p3) (cadr p3) 0.0))
  140. )
  141. (setq ptm (mid (list (/ len 2.0) (/ wid 2.0) 0.0) pt))
  142. (setq pte (cadr (LM:Inters2Circle ptm (distance ptm pt) (list (/ len 2.0) (/ wid 2.0) 0.0) (/ len 2.0))))
  143. (if (eq pte nil) (setq pte (cadr (LM:Inters2Circle pt (distance (list (/ len 2.0) 0.0 0.0) (last ptlst)) (list (/ len 2.0) (/ wid 2.0) 0.0) (/ len 2.0)))))
  144. (setq pte (list (car pte) (cadr pte) 0.0))
  145. (setq ss (ssget "_C" (list (- (/ len 2.0) 0.1) -0.1 0.0) (list (+ (/ len 2.0) 0.1) 0.1 0.0)))
  146. (align ss (list (/ len 2.0) (/ wid 2.0) 0.0) (list (/ len 2.0) (/ wid 2.0) 0.0) (list rad 0.0 hig) pt (list (/ len 2.0) 0.0 0.0) pte)
  147. (vl-cmdf "_.ucs" "e" pte)
  148. (vl-cmdf "_.explode" ss "")
  149. (vl-cmdf "_.pedit" "l" "" "j" "p" "" "")
  150. (vl-cmdf "_.ucs" "w")
  151. (setq ss (ssget "_L"))
  152. (align ss (setq p1 (osnap (setq p1o (cdr (assoc 10 (entget (ssname ss 0))))) "_end")) (list (car p1) (cadr p1) 0.0) (setq p2 (osnap (setq p2o (cdr (assoc 10 (cdr (member (list 10 (car p1o) (cadr p1o)) (entget (ssname ss 0))))))) "_end")) (list (car p2) (cadr p2) 0.0) (setq p3 (osnap (cdr (assoc 10 (cdr (member (list 10 (car p2o) (cadr p2o)) (entget (ssname ss 0)))))) "_end")) (list (car p3) (cadr p3) 0.0))
  153. (if (and (equal p1 pt 1e-6) (equal p2 (list (/ len 2.0) (/ wid 2.0) 0.0) 1e-6)) (setq pte p3))
  154. (if (and (equal p2 pt 1e-6) (equal p1 (list (/ len 2.0) (/ wid 2.0) 0.0) 1e-6)) (setq pte p3))
  155. (if (and (equal p3 pt 1e-6) (equal p1 (list (/ len 2.0) (/ wid 2.0) 0.0) 1e-6)) (setq pte p2))
  156. (if (and (equal p1 pt 1e-6) (equal p3 (list (/ len 2.0) (/ wid 2.0) 0.0) 1e-6)) (setq pte p2))
  157. (if (and (equal p3 pt 1e-6) (equal p2 (list (/ len 2.0) (/ wid 2.0) 0.0) 1e-6)) (setq pte p1))
  158. (if (and (equal p2 pt 1e-6) (equal p3 (list (/ len 2.0) (/ wid 2.0) 0.0) 1e-6)) (setq pte p1))
  159. (vl-cmdf "_.plan" "")
  160. (vl-cmdf "_.regen")
  161. (vl-cmdf "_.zoom" "v")
  162. (setq ss (ssget "_X" '((0 . "LWPOLYLINE"))))
  163. (vl-cmdf "_.region" ss "")
  164. (setq ss (ssget "_X" '((0 . "REGION"))))
  165. (vl-cmdf "_.mirror" ss "" "_non" pte "_non" pt "")
  166. (setq ss (ssget "_X" '((0 . "REGION"))))
  167. (vl-cmdf "_.mirror" ss "" '(0.0 0.0 0.0) '(0.0 1.0 0.0) "")
  168. (vl-cmdf "_.pasteclip" '(0.0 0.0 0.0))
  169. (setvar 'aperture ap)
  170. (setvar 'cmdecho cmde)
  171. (setvar 'osmode osm)
  172. (princ)
  173. )

 
正如您所看到的,(ssget“_X”)检查所有数据库中的实体,因此,如果您有尚未由例程创建的实体,例程可能也会包括它们,并使用应用于它们的对齐和镜像命令将DWG弄乱。。。
 
M、 R。
235027l7mi9gnfww22kxdm.jpg
回复

使用道具 举报

77

主题

298

帖子

232

银币

后起之秀

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

铜币
394
发表于 2022-7-5 23:09:46 | 显示全部楼层
太棒了,非常感谢你的帮助,马尔科。我设法让它工作得很好——大多数时候。虽然我确实得到了一个很好的错误列表,但它确实生成了配置文件。
 
我发现DWG中可以有不会中断例程的对象,只要它们只是直线。如果我选择为测量拾取点,而不是手动输入值,这将非常方便。
 
我还发现在模型空间中使用两个视口运行例程很方便。。。主视口是我在其中激活例程的视口(它会自动切换到平面图),第二个视口是我在等轴测视图中留下的。。。这允许我选择形状上的点,然后切换回主视口以输入曲线面/段的数量,并运行其余的例程。
 
  1.   (if (not (vl-catch-all-error-p (vl-catch-all-apply 'sslength (list (ssget "_X"))))) (progn (alert "\nWarning DWG contains entities - there must be no entities - exiting") (exit)))

 
是我得到的错误,但配置文件仍然生成良好。
 
再次感谢你的帮助,马尔科。
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 23:14:03 | 显示全部楼层
大家好,
 
我很抱歉重提过去,但我只是在重温这一惯例——我找不到办法让它发挥作用。
 
我记得有一些技巧。。。但这次我运气不好。
 
只是想知道是否有人可以帮我完善这个转换例程(在第7篇文章中)?
 
再次感谢。
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 23:15:55 | 显示全部楼层
在这里,我在输入值中添加了一些限制(必须合理,否则会失败);还添加了对align命令的替代-从www.theswamp获取了Highfyingbird的函数。组织。。。如果它现在失败了,我也帮不了你——这是因为电脑(它在我的电脑上工作)。另外请注意,如果您使用的是A2008或更少版本,则需要将所有带有(vl cmdf“0.explode”ss)的行更改为(vl cmdf“0.explode”ss”)——如果您使用的是A2009或更高版本,则不应更改我刚刚发布的代码中的任何内容。。。
 
  1. (setq ss (ssget "_X" '((0 . "LWPOLYLINE"))))
  2. (setq ss (ssget "_X" '((0 . "REGION"))))
M.R。
 
我公司的附加条款。即使我在每个顶点上输入20个以上的线段,它也可以工作,但我强烈建议您,如果不需要,请使用尽可能少的线段。。。
回复

使用道具 举报

77

主题

298

帖子

232

银币

后起之秀

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

铜币
394
发表于 2022-7-5 23:21:54 | 显示全部楼层
你好,Marko,
 
再次感谢您的回复。
 
我的电脑一定出了问题,因为我还是不能用。
 
您最初的post#7例程有效–只有在我键入值(而不是拾取点)时才有效。
 
我根本无法让你的新习惯发挥作用。
 
再次感谢您的帮助-希望其他人能够帮助我。
 
干杯
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 23:24:01 | 显示全部楼层
 
这个话题开始过时了。。。所以我决定把它再次变成现实。。。我做了我能做的,你有没有找到解决你的任务的办法?依我之见,我认为这个程序绝对是可靠的类型和能力的计算机你们有。。。有时它可以按需要执行任务,但有时它不做应该做的事情-如果输入太高(每个顶点的段数),它就不能很好地执行切片命令,结果很奇怪,顺便说一句,例程没有完成到最后。。。既然没有人再回复了,我想知道你们是否能够使用这个程序。。。也许现在有人可以提供一些帮助。。。
 
真的,M.R。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 03:10 , Processed in 0.843051 second(s), 74 queries .

© 2020-2025 乐筑天下

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