乐筑天下

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

[编程交流] 需要AutoLisp例程

[复制链接]

1

主题

8

帖子

7

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 12:34:46 | 显示全部楼层
很抱歉对块是动态的。因此,如果需要,我可以使RDN1 RDN2属性不可见,或者使用动态可见性参数,这样它们就不会出现在模型空间中。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:39:53 | 显示全部楼层
有点过头了,但这是怎么回事?
 
  1. (defun c:Contact (/ *error* lst2str dcl_write ATT1 ATT2 DCTAG DESTTAGLST ELST1
  2.                            ELST2 ENT1 ENT2 OFILE PTR SOURCETAG TAG TLST UFLAG)
  3. (vl-load-com)
  4. ;; Lee Mac  ~  04.02.10
  5. (setq SourceTag "RDN" DestTagLst '("RDN1" "RDN2"))
  6. (setq *doc (cond (*doc) ((vla-get-ActiveDocument
  7.                             (vlax-get-acad-object)))))
  8. (defun *error* (msg)
  9.    (and uFlag (vla-EndUndoMark *doc))
  10.    (and ofile (close ofile))
  11.    (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
  12.        (princ (strcat "\n** Error: " msg " **")))
  13.    (princ))                 
  14. (defun lst2str (lst sep)
  15.    (if (cdr lst)
  16.      (strcat (car lst) sep (lst2str (cdr lst) sep))
  17.      (car lst)))
  18. (defun dcl_write (fname / wPath ofile)   
  19.    (if (not (findfile fname))      
  20.      (if (setq wPath (findfile "ACAD.PAT"))
  21.        (progn
  22.          (setq wPath (vl-filename-directory wPath))
  23.          
  24.          (or (eq "\" (substr wPath (strlen wPath)))
  25.              (setq wPath (strcat wPath "\")))
  26.          
  27.          (setq ofile (open (strcat wPath fname) "w"))         
  28.          (foreach str '("fldtag : dialog { label = "Choose Tag";"
  29.                         "spacer; : list_box { key = "tags"; }"
  30.                         "spacer;  ok_cancel; }")            
  31.            (write-line str ofile))         
  32.          (setq ofile (close ofile)) t) nil) t))
  33. (while
  34.    (progn
  35.      (setq ent1 (nentsel (strcat "\nSelect Block or Attrib to get " SourceTag ": ")))
  36.      (cond (  (eq 'ENAME (type (car ent1)))
  37.               (if (or (and (eq "ATTRIB"  (cdr (assoc 0 (setq eLst1 (entget (car ent1))))))
  38.                            (eq SourceTag (strcase (cdr (assoc 2 eLst1))))
  39.                            (setq att1 (vlax-ename->vla-object (car ent1))))
  40.                      
  41.                       (and (= 4 (length ent1))
  42.                            (eq "INSERT" (cdr (assoc 0 (entget (setq ent1 (car (last ent1)))))))
  43.                            (= 1 (cdr (assoc 66 (entget ent1))))
  44.                            (progn
  45.                              (while (not (eq "SEQEND" (cdr (assoc 0 (entget (setq ent1 (entnext ent1)))))))
  46.                                (if (eq SourceTag (strcase (cdr (assoc 2 (entget ent1)))))
  47.                                  (setq att1 (vlax-ename->vla-object ent1))))
  48.                              
  49.                              att1)))
  50.                 (while
  51.                   (progn
  52.                     (setq ent2 (nentsel (strcat "\nSelect Destination Attrib for " SourceTag ": ")))
  53.                     (cond (  (eq 'ENAME (type (car ent2)))
  54.                              (if (or (and (eq "ATTRIB" (cdr (assoc 0 (setq eLst2 (entget (car ent2))))))
  55.                                           (vl-position (strcase (cdr (assoc 2 eLst2))) DestTagLst)
  56.                                           (setq att2 (vlax-ename->vla-object (car ent2))))
  57.                                      (and (= 4 (length ent2))
  58.                                           (eq "INSERT" (cdr (assoc 0 (entget (setq ent2 (car (last ent2)))))))
  59.                                           (= 1 (cdr (assoc 66 (entget ent2))))
  60.                                           (progn
  61.                                             (while (not (eq "SEQEND" (cdr (assoc 0 (entget (setq ent2 (entnext ent2)))))))
  62.                                               (if (vl-position (setq tag (strcase (cdr (assoc 2 (entget ent2))))) DestTagLst)
  63.                                                 (setq tLst (cons (cons tag ent2) tLst))))
  64.                                             (if tLst
  65.                                               (if (< 1 (length tLst))
  66.                                                 (if (dcl_write "LMAC_Contact.dcl")
  67.                                                   (cond (  (<= (setq dcTag (load_dialog "LMAC_Contact.dcl")) 0)
  68.                                                            (princ "\n** Error Loading Dialog **"))
  69.                                                         (  (not (new_dialog "fldtag" dcTag))
  70.                                                            (princ "\n** Error Loading Dialog **"))
  71.                                                         (t
  72.                                                            (setq ptr "0")                                                         
  73.                                                            (start_list "tags")
  74.                                                            (mapcar (function add_list)
  75.                                                                    (mapcar (function car) tLst))
  76.                                                            (end_list)
  77.                                                            (action_tile "tags"   "(setq ptr $value)")
  78.                                                            (action_tile "accept" "(done_dialog)")
  79.                                                            (action_tile "cancel" "(setq ptr nil) (done_dialog)")
  80.                                                            (start_dialog)
  81.                                                            (unload_dialog dcTag)
  82.                                                            (if ptr
  83.                                                              (setq att2 (vlax-ename->vla-object
  84.                                                                           (cdr (nth (read ptr) tLst))))))))
  85.                                                 
  86.                                                 (setq att2 (vlax-ename->vla-object (cdar tLst))))
  87.                                              
  88.                                               (princ (strcat "\n** ATTRIB Must be Either " (lst2str DestTagLst ",") " **")))
  89.                                             (setq tLst nil)
  90.                                             att2)))                                                         
  91.                                  (progn
  92.                                    (setq uFlag (not (vla-StartUndoMark *doc)))
  93.                                    
  94.                                    (vla-put-TextString att2
  95.                                      (strcat "%<\\AcObjProp Object(%<\\_ObjId "
  96.                                        (itoa
  97.                                          (vla-get-ObjectId att1)) ">%).TextString>%"))
  98.                                     (vla-update att2)
  99.                                     (setq uFlag (vla-EndUndoMark *doc)))
  100.                                (princ "\n** Object Must be an INSERT or ATTRIB **"))))))
  101.                
  102.                 (princ (strcat "\n** Object Must be an INSERT or ATTRIB with Tag "" SourceTag "" **")))))))
  103. (vla-regen *doc acActiveViewport)
  104. (princ))
回复

使用道具 举报

1

主题

8

帖子

7

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 12:40:55 | 显示全部楼层
好啊太可怕了!!!!!就是这个。我欠你几品脱。(和其他许多人一起……干杯!)
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:47:35 | 显示全部楼层
 
不客气,我很喜欢写
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 10:53 , Processed in 0.318164 second(s), 58 queries .

© 2020-2025 乐筑天下

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