乐筑天下

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

[编程交流] 用新模板更新旧模板

[复制链接]

20

主题

81

帖子

61

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 11:10:33 | 显示全部楼层 |阅读模式
所以我不得不做很多无聊的工作,比如用新模板更新旧模板。我被要求将所有属性文本复制到新模板。不,我不打算做那个手册。所以我开始在论坛上搜索我可以使用的autolisp。到目前为止,我几乎得到了它,除了一个我丢失的小链接。问题是新模板没有与新模板相同的标签,甚至少了一个主题行。
 
所以我必须合并一个属性(att1+att2)=att3就足够了。
Edit在搜索battman lisp后找到了重命名标记lisp文件
edit2:我现在一切正常,只需要合并两个属性值。
EDIT3仅当块具有相同名称时,代码粘贴才起作用。该块尝试删除检查但失败。有人知道怎么取消姓名审查吗?
 
  1. check new posts
回复

使用道具 举报

20

主题

81

帖子

61

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 12:28:14 | 显示全部楼层
哈哈,我在这里做了很多非真题(至少我学到了很多)。
为我工作的代码现在用新标签重命名旧标签,然后用新标签替换模板,并用attsync更新模板。它还调整新模板的比例。
 
  1. (defun changeTags (/ BLK DOC I TAGLST SS)
  2. (vl-load-com)
  3. (setq blk "A10"
  4.    tagLst '(
  5.         ;"Old Tag"    "New Tag"
  6. ("REG1"            "PROJECTTITLE2")
  7.         ("REG2"             "TITLE1")
  8.         ("REG3"            "TITLE2")
  9. ("CLIENT"            "CLIENT1")
  10. ("PROJECT"            "PROJECTTITLE1")
  11. ("REG1"            "PROJECTTITLE2")   
  12.         )
  13.    i -1
  14.    doc (vla-get-activedocument (vlax-get-acad-object))
  15.    )
  16. (if (ssget "_X" (list (cons 0 "INSERT")(cons 2 blk)))
  17.    (vlax-for bl (setq ss (vla-get-activeselectionset doc))
  18.      (foreach att (vlax-invoke bl 'getAttributes)
  19.    (If (assoc (vla-get-tagstring att) tagLst)
  20.      (vla-put-tagstring att (cadr (assoc (vla-get-tagstring att) tagLst)))
  21.      )))
  22.    (princ "\nNo Selection Set Found."))
  23. (princ)
  24. (progn
  25.         (command "-rename" "b" "A10" "new block NEW LOGO")
  26.         (command "_.-insert" "new block NEW LOGO=Template_New_2010" "y" nil);replaced convert template to new template.
  27. (command "_.attsync" "n" "new block NEW LOGO")
  28.         (scl);; scales all templates
  29. )(princ)(princ "succes!")(princ)
  30. )
  31. ;; Run program manually with this:
  32. (defun c:ChTag () (changeTags))
  33. ;; Uncomment this to run when lisp loaded
  34. ;(changeTags)
  35. ;; Scale the old template to new one
  36. (defun scl (/ ss)
  37. (vl-load-com)
  38. (if (setq SS (ssget "_X" (list '(0 . "INSERT") (cons 2 "new block NEW LOGO"))))
  39. ;(if (setq ss (ssget '((0 . "CIRCLE,ARC,ELLIPSE"))))
  40.    (mapcar
  41.      (function
  42.        (lambda (Obj)
  43.          (vla-ScaleEntity Obj
  44.            (vla-get-insertionpoint Obj)9.673518)))
  45.      (mapcar 'vlax-ename->vla-object
  46.        (vl-remove-if 'listp
  47.          (mapcar 'cadr (ssnamex ss))))))
  48. (princ))

这一切都是成批进行的,所以我要休息一天
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 11:34 , Processed in 0.351230 second(s), 56 queries .

© 2020-2025 乐筑天下

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