明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: 树櫴希德

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

[复制链接]
 楼主| 发表于 2024-5-15 15:00:35 | 显示全部楼层
选择集包围盒 by  @[x_s_s_1]生无可恋  大神
  1. (defun testss  (ss / lst lst1 maxx maxy minx miny n pt1 pt2)
  2.     (repeat (setq n (sslength ss))
  3.   (setq lst (cons  (vlax-ename->vla-object
  4.           (ssname ss (setq n (1- n))))
  5.       lst)))
  6.     (setq lst  (mapcar '(lambda  (x)
  7.           (vla-getboundingbox x 'pt1 'pt2)
  8.           (list (vlax-safearray->list pt1)
  9.           (vlax-safearray->list pt2)))
  10.            lst)
  11.     lst  (apply 'append lst)
  12.     lst1 (mapcar 'car lst)
  13.     lst  (mapcar 'cadr lst)
  14.     minx (apply 'min lst1)
  15.     maxx (apply 'max lst1)
  16.     miny (apply 'min lst)
  17.     maxy (apply 'max lst))
  18.     (list minx maxx miny maxy))
  19. (setq a (testss (setq ss (ssget))))
  20. ;|(command "point"     (list (* 0.5 (+ (car a) (cadr a)))          (* 0.5 (+ (caddr a) (cadddr a)))))|;
  21.    (command "point"     (list (* 0.5 (+ (car a) (cadr a)))          (* 0.5 (+ (caddr a) (cadddr a)))))

  22.   (command "rectangle" (list (car a )( caddr a))  (list (cadr a )( cadddr a))   )

 楼主| 发表于 2024-5-29 21:57:41 | 显示全部楼层
  1. (VL-LOAD-COM)
  2. (vla-update (vla-Move (vlax-ename->vla-object (car(nentsel)))(vlax-3d-point (getpoint ) )(vlax-3d-point (getpoint ) )  ))

 楼主| 发表于 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. )

 楼主| 发表于 2024-7-22 18:14:38 | 显示全部楼层
BY  `@[x_s_s_1]生无可恋  大神
定数等分长方体

  1. (defun c:tt (/ en n dis pt1 pt2)
  2.   (setq  en (car (entsel))
  3.   n  (getint "\n等分数:")
  4.   )
  5.   (vla-getboundingbox (vlax-ename->vla-object en) 'pt1 'pt2)
  6.   (setq  dis (- (car (vlax-safearray->list pt2))
  7.          (car (vlax-safearray->list pt1))
  8.       )
  9.   dis (/ dis n)
  10.   )
  11.   (command "copy" en "" "none" '(0 0) "none" (list dis 0))
  12.   (command "subtract" en "" (entlast) "")
  13.   (repeat (1- n)
  14.     (command "copy" en "" "none" '(0 0) "none" (list dis 0))
  15.     (setq en (entlast))
  16.   )
  17. )

 楼主| 发表于 2024-9-6 15:50:51 | 显示全部楼层
  1. ;;对原有命令进行修改,支持系统命令
  2. (defun c:xml (/ a b)
  3. (setq a(getstring"\n输入原有快捷命令")
  4. b(getstring"\n输入新的快捷命令"))
  5. (eval(read(strcat "(defun c:"b
  6. "()(vla-sendcommand (vla-get-activedocument (vlax-get-acad-object)) ""a
  7. "\n\")
  8. )")))
  9. )
 楼主| 发表于 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. ;;----------------------------------------------------------------------;;

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

本版积分规则

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

GMT+8, 2024-11-22 14:04 , Processed in 0.176392 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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