明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3335|回复: 15

收藏73哥程序,链式选择相交圆

[复制链接]
发表于 2023-10-18 12:25:51 | 显示全部楼层 |阅读模式

收藏73哥程序,链式选择相交圆

  1. (vl-load-com)
  2. (defun xBox(s / p a b);;选择集,图元(对象)表,图元包容盒
  3.   (vl-every'(lambda(x)
  4.         (vla-getboundingbox(if(=(type x)'ename)(vlax-ename->vla-object x)x)'a'b)
  5.         (setq p(append(mapcar'vlax-safearray->list(list a b))p)))
  6.      (if(/=(type s)'pickset)(if(listp s)s(list s))
  7.       (mapcar'cadr(member(nth(1-(sslength s))(setq s(ssnamex s)))(reverse s)))))
  8.   (mapcar'(lambda(a)(apply'mapcar(cons a p)))'(min max)))
  9. (defun rect(p)(list(List(caar p)(cadadr p))(cadr p)(list(caadr p)(cadar p))(car p)))
  10. (defun cirx(c1 c2 / e1 e2 d r1 r2);;两
  11.   (and(=(type c1)(type c2)'ename)
  12.       (setq e1(entget c1)e2(entget c2))
  13.       (equal(assoc 0 e1)'(0 . "CIRCLE"))
  14.       (equal(assoc 0 e2)'(0 . "CIRCLE"))
  15.       (setq d(distance(mapcar'+'(0 0)(cdr(assoc 10 e1)))(cdr(assoc 10 e2)))
  16.       r1(cdr(assoc 40 e1))r2(cdr(assoc 40 e2)))
  17.       (<(abs(- r1 r2))d(+ r1 r2))))
  18. (defun e2s(es / s)
  19.   (and(setq es(vl-remove-if-not(function(lambda(x)(equal(type x)'ename)))es))
  20.       (setq s(ssadd))(vl-every(function(lambda(x)(ssadd x s)))es))s)
  21. (defun s2e(s / n lst)(if(=(type s)'pickset)(repeat(setq n(sslength s))(setq n(1- n)lst(cons(ssname s n)lst)))))
  22. (defun ssgetcross(/ e n lst)
  23.   (if(setq e(ssget":E:S"'((0 . "circle"))))
  24.     (progn
  25.       (setq lst(list(ssname e 0))n 0)
  26.       (while(< n(setq n(length lst)))
  27.   (vl-some'(lambda(x)(or(vl-position x lst)
  28.             (if(vl-some'(lambda(a)(cirx x a))lst)
  29.         (setq lst(cons x lst))))nil)
  30.     (s2e(ssget"cp"(rect(xbox lst))'((0 . "circle"))))))
  31.       lst)))
  32. (sssetfirst nil(e2s(ssgetcross)))

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 2明经币 +2 收起 理由
tigcat + 1 很给力!
xj6019 + 1 赞一个!

查看全部评分

 楼主| 发表于 2024-9-30 21:01:37 | 显示全部楼层
LM向块内添加实体

  1. ;;----------------------=={ Add Objects to Block }==--------------------;;
  2. ;;                                                                      ;;
  3. ;;  This program enables the user to add a selection of objects to the  ;;
  4. ;;  definition of a selected block.                                     ;;
  5. ;;                                                                      ;;
  6. ;;  Upon issuing the command syntax 'addtoblock' at the AutoCAD         ;;
  7. ;;  command line, the program prompts the user for a selection of       ;;
  8. ;;  objects residing on unlocked layers to be added to a chosen block   ;;
  9. ;;  definition.                                                         ;;
  10. ;;                                                                      ;;
  11. ;;  Following a valid selection, the program prompts the user to select ;;
  12. ;;  a reference of a block whose definition is to be modified to        ;;
  13. ;;  incorporate all objects in the selection.                           ;;
  14. ;;                                                                      ;;
  15. ;;  At this prompt, the program will permit selection of any standard   ;;
  16. ;;  (non-dynamic) uniformly scaled block reference which is not         ;;
  17. ;;  referenced within the selection (as a block reference cannot be     ;;
  18. ;;  added to its own definition).                                       ;;
  19. ;;                                                                      ;;
  20. ;;  Every object in the selection will then be transformed relative to  ;;
  21. ;;  the position, scale, rotation, and orientation of the selected      ;;
  22. ;;  block reference, before being copied to the definition of the       ;;
  23. ;;  block and removed from the drawing.                                 ;;
  24. ;;----------------------------------------------------------------------;;
  25. ;;  Author:  Lee Mac, Copyright ?2011  -  www.lee-mac.com              ;;
  26. ;;----------------------------------------------------------------------;;
  27. ;;  Version 1.1    -    2011-05-31                                      ;;
  28. ;;                                                                      ;;
  29. ;;  - First release.                                                    ;;
  30. ;;----------------------------------------------------------------------;;
  31. ;;  Version 1.2    -    2020-11-15                                      ;;
  32. ;;                                                                      ;;
  33. ;;  - Program completely rewritten to incorporate a check for           ;;
  34. ;;    references of the target block within the selected objects.       ;;
  35. ;;----------------------------------------------------------------------;;

  36. (defun c:addtoblock ( / *error* bln bnl btr def ent enx idx lst sel tmp )

  37.     (defun *error* ( msg )
  38.         (LM:endundo (LM:acdoc))
  39.         (if (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*"))
  40.             (princ (strcat "\nError: " msg))
  41.         )
  42.         (princ)
  43.     )

  44.     (LM:startundo (LM:acdoc))
  45.     (cond
  46.         (   (not (setq sel (LM:ssget "\nSelect objects to add to block: " '("_")))))
  47.         (   (progn
  48.                 (repeat (setq idx (sslength sel))
  49.                     (setq idx (1- idx)
  50.                           ent (ssname sel idx)
  51.                           enx (entget ent)
  52.                           lst (cons (vlax-ename->vla-object ent) lst)
  53.                     )
  54.                     (if (and (= "INSERT" (cdr (assoc 0 enx)))
  55.                              (not (member (setq bln (strcase (cdr (assoc 2 enx)))) bnl))
  56.                         )
  57.                         (setq bnl (cons bln bnl))
  58.                     )
  59.                 )
  60.                 (while (setq def (tblnext "block" (not def)))
  61.                     (setq ent (tblobjname "block" (cdr (assoc 2 def))))
  62.                     (while (setq ent (entnext ent))
  63.                         (if (= "INSERT" (cdr (assoc 0 (setq enx (entget ent)))))
  64.                             (setq tmp (cons (strcase (cdr (assoc 2 enx))) tmp))
  65.                         )
  66.                     )
  67.                     (if tmp
  68.                         (setq btr (cons (cons (strcase (cdr (assoc 2 def))) tmp) btr)
  69.                               tmp nil
  70.                         )
  71.                     )
  72.                 )
  73.                 (while
  74.                     (progn (setvar 'errno 0) (setq ent (car (entsel "\nSelect block: ")))
  75.                         (cond
  76.                             (   (= 7 (getvar 'errno))
  77.                                 (princ "\nMissed, try again.")
  78.                             )
  79.                             (   (null ent)
  80.                                 nil
  81.                             )
  82.                             (   (/= "INSERT" (cdr (assoc 0 (setq enx (entget ent)))))
  83.                                 (princ "\nThe selected object is not a block.")
  84.                             )
  85.                             (   (not
  86.                                     (and
  87.                                         (equal (abs (cdr (assoc 41 enx))) (abs (cdr (assoc 42 enx))) 1e-8)
  88.                                         (equal (abs (cdr (assoc 41 enx))) (abs (cdr (assoc 43 enx))) 1e-8)
  89.                                     )
  90.                                 )
  91.                                 (princ "\nThis program is not currently compatible with non-uniformly scaled blocks - sorry.")
  92.                             )
  93.                             (   (= :vlax-true (vla-get-isdynamicblock (vlax-ename->vla-object ent)))
  94.                                 (princ "\nThis program is not currently compatible with dynamic blocks - sorry.")
  95.                             )
  96.                             (   (vl-some '(lambda ( bln ) (member bln bnl))
  97.                                     (
  98.                                         (lambda ( / rtn )
  99.                                             (setq bln (strcase (cdr (assoc 2 enx))))
  100.                                             (foreach def btr
  101.                                                 (cond
  102.                                                     (   (= bln (car def)))
  103.                                                     (   (member (car def) rtn))
  104.                                                     (   (addtoblock:referenced-p bln (cdr def) btr) (setq rtn (cons (car def) rtn)))
  105.                                                 )
  106.                                             )
  107.                                             (cons bln rtn)
  108.                                         )
  109.                                     )
  110.                                 )
  111.                                 (princ "\nThe selected block is referenced by a block in the selection.")
  112.                             )
  113.                         )
  114.                     )
  115.                 )
  116.                 ent
  117.             )
  118.             (   (lambda ( mat )
  119.                     (foreach obj lst (vla-transformby obj mat))
  120.                     (vla-copyobjects (LM:acdoc)
  121.                         (vlax-make-variant
  122.                             (vlax-safearray-fill
  123.                                 (vlax-make-safearray vlax-vbobject (cons 0 (1- (length lst))))
  124.                                 lst
  125.                             )
  126.                         )
  127.                         (vla-item (vla-get-blocks (LM:acdoc)) (cdr (assoc 2 (entget ent))))
  128.                     )
  129.                     (foreach obj lst (vla-delete obj))
  130.                     (vla-regen (LM:acdoc) acallviewports)
  131.                 )
  132.                 (apply
  133.                     (function
  134.                         (lambda ( mat vec )
  135.                             (vlax-tmatrix
  136.                                 (append
  137.                                     (mapcar
  138.                                         (function
  139.                                             (lambda ( x v )
  140.                                                 (append x (list v))
  141.                                             )
  142.                                         )
  143.                                         mat vec
  144.                                     )
  145.                                    '((0.0 0.0 0.0 1.0))
  146.                                 )
  147.                             )
  148.                         )
  149.                     )
  150.                     (revrefgeom ent)
  151.                 )
  152.             )
  153.         )
  154.     )
  155.     (LM:endundo (LM:acdoc))
  156.     (princ)
  157. )

  158. (defun addtoblock:referenced-p ( bln def lst )
  159.     (or (member bln def)
  160.         (vl-some '(lambda ( nst ) (addtoblock:referenced-p bln (cdr (assoc nst lst)) lst)) def)
  161.     )
  162. )

  163. ;; RevRefGeom (gile)
  164. ;; The inverse of RefGeom

  165. (defun revrefgeom ( ent / ang enx mat ocs )
  166.     (setq enx (entget ent)
  167.           ang (cdr (assoc 050 enx))
  168.           ocs (cdr (assoc 210 enx))
  169.     )
  170.     (list
  171.         (setq mat
  172.             (mxm
  173.                 (list
  174.                     (list (/ 1.0 (cdr (assoc 41 enx))) 0.0 0.0)
  175.                     (list 0.0 (/ 1.0 (cdr (assoc 42 enx))) 0.0)
  176.                     (list 0.0 0.0 (/ 1.0 (cdr (assoc 43 enx))))
  177.                 )
  178.                 (mxm
  179.                     (list
  180.                         (list (cos ang)     (sin ang) 0.0)
  181.                         (list (- (sin ang)) (cos ang) 0.0)
  182.                        '(0.0 0.0 1.0)
  183.                     )
  184.                     (mapcar '(lambda ( v ) (trans v ocs 0 t))
  185.                         '(
  186.                              (1.0 0.0 0.0)
  187.                              (0.0 1.0 0.0)
  188.                              (0.0 0.0 1.0)
  189.                          )
  190.                     )
  191.                 )
  192.             )
  193.         )
  194.         (mapcar '- (cdr (assoc 10 (tblsearch "block" (cdr (assoc 2 enx)))))
  195.             (mxv mat (trans (cdr (assoc 10 enx)) ocs 0))
  196.         )
  197.     )
  198. )

  199. ;; Matrix Transpose  -  Doug Wilson
  200. ;; Args: m - nxn matrix

  201. (defun trp ( m )
  202.     (apply 'mapcar (cons 'list m))
  203. )

  204. ;; Matrix x Matrix  -  Vladimir Nesterovsky
  205. ;; Args: m,n - nxn matrices

  206. (defun mxm ( m n )
  207.     ((lambda ( a ) (mapcar '(lambda ( r ) (mxv a r)) m)) (trp n))
  208. )

  209. ;; Matrix x Vector  -  Vladimir Nesterovsky
  210. ;; Args: m - nxn matrix, v - vector in R^n

  211. (defun mxv ( m v )
  212.     (mapcar '(lambda ( r ) (apply '+ (mapcar '* r v))) m)
  213. )

  214. ;; ssget  -  Lee Mac
  215. ;; A wrapper for the ssget function to permit the use of a custom selection prompt
  216. ;; msg - [str] selection prompt
  217. ;; arg - [lst] list of ssget arguments

  218. (defun LM:ssget ( msg arg / sel )
  219.     (princ msg)
  220.     (setvar 'nomutt 1)
  221.     (setq sel (vl-catch-all-apply 'ssget arg))
  222.     (setvar 'nomutt 0)
  223.     (if (not (vl-catch-all-error-p sel)) sel)
  224. )

  225. ;; Start Undo  -  Lee Mac
  226. ;; Opens an Undo Group.

  227. (defun LM:startundo ( doc )
  228.     (LM:endundo doc)
  229.     (vla-startundomark doc)
  230. )

  231. ;; End Undo  -  Lee Mac
  232. ;; Closes an Undo Group.

  233. (defun LM:endundo ( doc )
  234.     (while (= 8 (logand 8 (getvar 'undoctl)))
  235.         (vla-endundomark doc)
  236.     )
  237. )

  238. ;; Active Document  -  Lee Mac
  239. ;; Returns the VLA Active Document Object

  240. (defun LM:acdoc nil
  241.     (eval (list 'defun 'LM:acdoc 'nil (vla-get-activedocument (vlax-get-acad-object))))
  242.     (LM:acdoc)
  243. )

  244. ;;----------------------------------------------------------------------;;

  245. (vl-load-com)
  246. (princ
  247.     (strcat
  248.         "\n:: AddObjectsToBlock.lsp | Version 1.2 | \\U+00A9 Lee Mac "
  249.         ((lambda ( y ) (if (= y (menucmd "m=$(edtime,0,yyyy)")) y (strcat y "-" (menucmd "m=$(edtime,0,yyyy)")))) "2011")
  250.         " www.lee-mac.com ::"
  251.         "\n:: Type \"addtoblock\" to Invoke ::"
  252.     )
  253. )
  254. (princ)

  255. ;;----------------------------------------------------------------------;;
  256. ;;                             End of File                              ;;
  257. ;;----------------------------------------------------------------------;;

 楼主| 发表于 2024-1-17 18:20:38 | 显示全部楼层

收藏藏老师程序
修复无法插入图形文件

;通过DBX读取原文件,拷贝到一个块里边,释放DBX,重建DBX,从块内拷到DBX,保存
;然后就可以插入了

  1. (defun c:xfwfcrdwg(/ file *cad *doc blk *dbx model l n)
  2.   (and
  3.     (setq file(getfiled "修复无法插入图形文件""""dwg" 4))
  4.     (setq *cad(vlax-get-acad-object)
  5.           *doc(vlax-get-property *cad 'activedocument)
  6.           blk(vlaX-invoke-method(vlax-get-property *doc 'blocks)'add(vlax-3d-point'(0 0))"*U")
  7.           *dbx(atoi(getvar "ACADVER"))
  8.           *dbx(vla-GetInterfaceObject *cad(if(< *dbx 16)"ObjectDBX.AxDbDocument"(strcat"ObjectDBX.AxDbDocument."(itoa *dbx))))      
  9.     )
  10.     (not(VL-CATCH-ALL-APPLY'vlax-invoke-method(List *dbx'open file)))
  11.     (setq model(vlax-get-property *dbx 'modelspace)
  12.           n -1
  13.       l(vlax-make-safearray 9(cons 0(1-(vlax-get-property model 'count))))      
  14.     )
  15.     (vlax-for x model(setq n(1+ n))(vlax-safearray-put-element l n x))
  16.     (vlax-invoke-method *dbx'copyobjects l blk)
  17.     (setq l (vlax-variant-value(vlax-invoke-method *dbx'copyobjects l blk)))
  18.     (vlax-release-object *dbx)
  19.     (setq *dbx(atoi(getvar "ACADVER"))
  20.           *dbx(vla-GetInterfaceObject *cad(if(< *dbx 16)"ObjectDBX.AxDbDocument"(strcat"ObjectDBX.AxDbDocument."(itoa *dbx))))      
  21.     )
  22.     (vlax-invoke-method *doc 'copyobjects l(vlax-get-property *dbx'modelspace))
  23.     (vlax-invoke-method blk 'delete)
  24.     (vlax-invoke-method *dbx 'saveas file)   
  25.   )  
  26. )

 楼主| 发表于 2024-6-10 16:49:05 | 显示全部楼层
如何获取系统的屏幕分辨率设置值?谢谢
@Koz  @必强  感谢两位大佬!


  1. (Defun vlsys-GetScreenResolution (/ w h wmi meth1 meth2 n)
  2.   (if (setq wmi (vlax-create-object "WbemScripting.SWbemLocator"))
  3.     (progn
  4.       (setq meth1 (vlax-invoke wmi 'ConnectServer)
  5.         meth2 (vlax-invoke
  6.             meth1 'ExecQuery
  7.         "Select * from Win32_VideoController"
  8.         "WQL" 48
  9.            )
  10.       )
  11.       (vlax-for    n meth2
  12.     (setq w    (vlax-get n 'CurrentVerticalResolution)
  13.           h    (vlax-get n 'CurrentHorizontalResolution)
  14.     )
  15.       )
  16.       (mapcar 'vlax-release-object (list wmi meth1 meth2))
  17.     )
  18.   )
  19.    (list w h)
  20. )

  21. (Defun vldcl-GetScreenResolutionByH51 (/ VLO)
  22.   (setq    vlo (vlax-get-property
  23.           (vlax-get-property
  24.         (vlax-get-or-Create-Object "HtmlFile")
  25.         "ParentWindow"
  26.           )
  27.           "Screen"
  28.         )
  29.   )
  30.   (mapcar '(lambda (x) (vlax-get-property vlo x))
  31.       '("width" "height" "logicalXDPI" "logicalYDPI")
  32.   )
  33. )

发表于 2023-10-19 12:27:15 | 显示全部楼层
顶,聊天群看到的,也收藏了 。厉害
发表于 2023-10-19 19:40:48 | 显示全部楼层
谢谢分享,收藏+1
 楼主| 发表于 2023-10-19 20:40:54 | 显示全部楼层
本帖最后由 树櫴希德 于 2023-10-20 12:10 编辑


73哥 代码  带容差链式选择园
  1. (defun ssgetcross(e fuz / s lst cirx)
  2.   (defun cirx(e1 e2 / d r1 r2)
  3.     (setq e1(entget e1)e2(entget e2)
  4.     d(distance(mapcar'+'(0 0)(cdr(assoc 10 e1)))(cdr(assoc 10 e2)))
  5.     r1(cdr(assoc 40 e1))r2(cdr(assoc 40 e2)))
  6.     (<(abs(- r1 r2 fuz))d(+ r1 r2 fuz)))
  7.   (if(and(=(type e)'ENAME)(vl-position'(0 . "CIRCLE")(entget e))(numberp fuz))
  8.     (progn
  9.       (setq lst(list e)s(vl-remove(car lst)(mapcar'cadr(ssnamex(ssget"x"'((0 . "circle"))))))n 0)
  10.       (while(< n(setq n(length lst)))
  11.   (vl-some'(lambda(x)
  12.        (if(vl-some'(lambda(a)(cirx x a))lst)
  13.          (setq lst(cons x lst)s(vl-remove x s)))nil)s))
  14.       lst)))

  15. (defun e2s(es / s)
  16.   (and(setq es(vl-remove-if-not(function(lambda(x)(equal(type x)'ename)))es))
  17.       (setq s(ssadd))(vl-every(function(lambda(x)(ssadd x s)))es))s)


  18. (sssetfirst nil(e2s(ssgetcross(car(entsel"选择圆"))0.3)))
 楼主| 发表于 2023-10-20 15:58:04 | 显示全部楼层
  1. (defun tt-el(e / a b p0);;返回椭圆的焦点;e 椭圆图元名
  2.   (if(and(=(type e)'ename)
  3.    (vl-position'(0 . "ELLIPSE")(setq e(entget e))))
  4.     (setq a(cdr(assoc 11 e))b(*(sqrt(- 1(expt(cdr(assoc 40 e))2)))(distance'(0 0)a))
  5.     p0(cdr(assoc 10 e))
  6.     p0(list(mapcar'+(polar'(0 0)(angle'(0 0)a)b)p0)
  7.      (mapcar'+(polar'(0 0)(angle a'(0 0))b)p0)))))
  8. (defun tt147(e p);;;过曲线指定点绘制切线
  9.   (or(VL-CATCH-ALL-ERROR-P(setq p(VL-CATCH-ALL-APPLY(function vlax-curve-getclosestpointto)(list e p))))
  10.      (vlax-invoke-method(vlax-get-property(vlax-get-property(vlax-get-acad-object)'activedocument)'modelspace)
  11.        'addxline(vlax-3d-point p)
  12.        (vlax-3d-point(polar p(angle'(0 0)(vlax-curve-getFirstDeriv e(vlax-curve-getParamAtPoint e p)))1)))))

  13. (defun tt123(e p);;;过曲线指定点绘制切线
  14.   (or(VL-CATCH-ALL-ERROR-P(setq p(VL-CATCH-ALL-APPLY(function vlax-curve-getclosestpointto)(list e p))))
  15.      (entmake(list'(0 . "XLINE") '(100 . "AcDbEntity") '(100 . "AcDbXline")
  16.       (cons 10 p)
  17.       (cons 11(vlax-curve-getFirstDeriv e(vlax-curve-getParamAtPoint e p)))))))

  18. ;(tt-el (car(entsel)))
  19. ;(tt147 (car(entsel))  (getpoint))

 楼主| 发表于 2024-3-28 20:43:39 | 显示全部楼层
沿多段线布圆圈


  1. ;

  2. ( defun c:ddxyuan  (/  juli ddx gs i pt rr)
  3. (setq juli (getreal "\n请输入间隔距离:"))
  4.   (setq rr (getreal "\n请输入圆圈半径:"))
  5. (setq ddx (car(entsel "\n请选择多段线:" )) )
  6.   (setq gs (fix(/ (vlax-get-property (vlax-ename->vla-object   ddx) "length") juli )) )
  7.      (setq i 1)
  8.        (repeat  (+ gs 1 )
  9.          (setq pt  (vlax-curve-getPointAtDist ddx (* i juli)))
  10.    (entmake (list '(0 . "CIRCLE") (cons 10 pt) (cons 40 rr)))
  11.    (setq i (1+ i))
  12.    )

  13.        (princ)

  14.       )

  15. ( defun c:ddxyuan1  (/  juli ddx gs i pt rr)
  16. (setq gs (getint "\n请输入圆个数:"))
  17.   (setq rr (getreal "\n请输入圆圈半径:"))
  18. (setq ddx (car(entsel "\n请选择多段线:" )) )
  19.   (setq juli (/ (vlax-get-property (vlax-ename->vla-object   ddx) "length") gs ))
  20.      (setq i 1)
  21.        (repeat  (+ gs 0 )
  22.          (setq pt  (vlax-curve-getPointAtDist ddx (* i juli)))
  23.    (entmake (list '(0 . "CIRCLE") (cons 10 pt) (cons 40 rr)))
  24.    (setq i (1+ i))
  25.    )

  26.        (princ)

  27.       )

 楼主| 发表于 2024-4-4 10:13:19 | 显示全部楼层
  1. (defun c:pp ( /  objold  ) ;偏移块内多段线至图面
  2.   (prompt "\n 需要EXPRESS工具箱支持才能")
  3. (command  "ncopy" (cadr(entsel"\n请选择块内多段线:")) "" "0,0" "0,0" )
  4. (setq objold   (vlax-ename->vla-object(entlast) ) )
  5. (vla-offset  objold  (* -1 (getreal "\n请输入偏移值:")))
  6. (vla-Delete objold )  (vla-put-Color (vlax-ename->vla-object(entlast) ) 1 )
  7. (princ)
  8. )

发表于 2024-4-13 16:10:13 | 显示全部楼层
什么是链接选择
 楼主| 发表于 2024-5-9 19:19:24 | 显示全部楼层
  1. (vl-load-com)
  2. (setq e(car(entsel"选择直线或多段线")))

  3. ;;;线完全穿过所有圆
  4. (defun tt(e / s)
  5.   (vl-every(function(lambda(x)
  6.           (or(=(rem(vl-position x s)2)1)
  7.        (vl-cmdf"-hatch""P""SOLID""S"(cadr x)""""))))
  8.      (setq s(ssnamex(ssget"F"(list(vlax-curve-getstartpoint e)
  9.          (vlax-curve-getendpoint e))
  10.        '((0 . "circle")))))))
  11. (tt e)


  1. (defun c:tt  (/ ANG DIS DIS1 EN N PT1 PT2)
  2.     (setvar 'osmode 4)
  3.     (setq en   (car (entsel "\nfirst circle:"))
  4.     pt1  (cdr(assoc 10 (entget en)))
  5.     pt2  (getpoint pt1 "\nend point:")
  6.     dis  (distance pt1 pt2)
  7.     dis1 (getdist pt1 "\ngetdist:")
  8.     n    (fix (/ dis dis1))
  9.     ang  (angle pt1 pt2))
  10.     (setvar 'hpname "solid")
  11.     (vl-cmdf "_bhatch" "s" en "" "")
  12.     (repeat (fix(* 0.5(1+ n)))
  13.   (setq en (entlast))
  14.   (vl-cmdf "copy" (entlast) "" "none" pt1 "none" (setq pt1 (polar pt1 ang (* 2 dis1))))))


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-12-22 22:28 , Processed in 1.115251 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表