乐筑天下

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

[编程交流] 直线、圆、,

[复制链接]

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-5 19:32:07 | 显示全部楼层
恐怕我弄错了。我确信这会带来结果。(我很尴尬)。这并不意味着无法通过lisp访问您搜索的信息。这只是意味着我不适合这份工作。很抱歉没有受过教育的快速回复
回复

使用道具 举报

8

主题

14

帖子

6

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-5 19:35:33 | 显示全部楼层
下面列出的程序在3D图纸中提取孔。我可以用这个代码提取其他类型的孔(正方形或三角形)吗。
 
  1. (vl-load-com)
  2. (defun c:test (/ i e p1 p2 ss lst q var f fn dat dat1)
  3. ;hanhphuc 2014
  4. (set 'var (getvar 'cmdecho ))
  5. (setvar 'cmdecho 0)
  6. (if (and (setq e (entsel "\nPlease select solid.. ")) (setq e (car e)) (= (cdr (assoc 0 (entget e))) "3DSOLID"))
  7.    (progn (vla-GetBoundingBox (setq obj (vlax-ename->vla-object e)) 'p1 'p2)
  8.    (mapcar ''((a b) (set a (vlax-safearray->list b))) '(p1 p2) (list p1 p2))
  9.    (command "_explode" e)
  10.    (setq i   0
  11.          ss  (ssget "C" p1 p2)
  12.          lst (mapcar '(lambda(x)
  13.                         (setq q nil)
  14.                         (if
  15.                          (= (cdr (assoc 0 (entget x))) "REGION")
  16.                          (setq q (cons (LM:reg x) q))
  17.                          (setq q (cons (vlax-ename->vla-object x) q))
  18.                          )
  19.                         (if
  20.                          (listp q)
  21.                          (LM:flatten q)
  22.                          q
  23.                          )
  24.                         )
  25.                      (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
  26.                      ) ;_ end of mapcar
  27.          ) ;_ end of setq
  28.      
  29.    (foreach o (vl-remove-if-not ''((x) (= (vla-get-ObjectName x) "AcDbCircle")) (LM:flatten lst))
  30.      
  31.      (setq dat(cons (princ (strcat "\nCIRCLE_" (itoa (setq i (1+ i))) " "
  32.              (vl-princ-to-string
  33.                  (mapcar ''((x)(vlax-get o x)) '(Radius Center))
  34.                )))
  35.                      dat))
  36.       
  37.      ) ;_ end of foreach
  38.    (command "_.U")
  39. (setq fn (strcat (getvar "dwgprefix") "hole dat.csv") f (open fn "w"))
  40. ; If you don't want to override file ,to append use (open fn "a") as suggested by Marko @ post#14
  41. (foreach $
  42. (foreach x dat
  43. (setq        dat1 (cons (vl-string-translate
  44.              " "
  45.              ","
  46.              (vl-list->string
  47.                (vl-remove-if ''((a) (or (= a 10) (= a 40) (= a 41))) (vl-string->list x))
  48.                ) ;_ end of vl-list->string
  49.              ) ;_ end of vl-string-translate
  50.            dat1
  51.            ) ;_ end of cons
  52. ) ;_ end of setq
  53. ) ;_ end of foreach
  54. (write-line $ f))
  55. (write-line " " f)
  56. (if f (close f))
  57. (startapp "notepad" fn)     ;<--remove this line if you don't want it to pop-up everytime
  58.    ) ;_ end of progn
  59.    ) ;_ end of if
  60. (setvar 'cmdecho var)
  61. (princ)
  62. ) ;_ end of defun
  63. ;;;[url]http://www.cadtutor.net/forum/showthread.php?35506-How-to-get-Region-coordinates/page2[/url]
  64. ;;;adopted as sub-function
  65. (defun LM:reg (reg / RetObj)
  66. (setq Reg (vlax-ename->vla-object reg))
  67. (if (vlax-method-applicable-p reg 'explode)
  68. (progn
  69. (setq RetObj (vlax-safearray->list (vlax-variant-value (vla-explode Reg))))
  70. (repeat (length RetObj)
  71.    (if        (eq "AcDbRegion" (vla-get-ObjectName (car RetObj)))
  72.      (setq RetObj (append RetObj (vlax-safearray->list (vlax-variant-value (vla-explode (car RetObj))))))
  73.      (setq RetObj (append RetObj (list (car RetObj))))
  74.      ) ;_ end of if
  75.    (setq RetObj (cdr RetObj))
  76.    ) ;_ end of repeat
  77. )
  78.    )
  79. retobj
  80. ) ;_ end of defun
  81. ;; Flatten List  -  Lee Mac
  82. ;; Transforms a nested list into a non-nested list
  83. ;; [url]http://www.lee-mac.com/flatten.html[/url]
  84. (defun LM:flatten ( l )
  85.    (if (atom l)
  86.        (list l)
  87.        (append (LM:flatten (car l)) (if (cdr l) (LM:flatten (cdr l))))
  88.    )
  89. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 14:00 , Processed in 1.101895 second(s), 54 queries .

© 2020-2025 乐筑天下

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