乐筑天下

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

[编程交流] 用于CenterPoint导出wi的Lisp

[复制链接]

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 06:56:43 | 显示全部楼层
 
 
 
需要注意的几件事。。。。
 
您正在创建一个划定的选项卡。XLS文件,并非所有版本的Excel都对其友好:
 
071402kl50r3r88upqu3r8.jpg
 
此外,请注意,即使用户没有进行有效选择,也会创建一个文件。通过首先提示输入文件名和选择集,您可以集中精力处理选择集,这将阻止创建空文件。
 
另外,这不是必须的,但您可以通过在代码末尾调用临时错误处理程序并在那里包含恢复来简化系统变量的恢复。。。此外,您可以通过不使用命令调用来最小化需要存储的系统变量的数量(如果您愿意的话;同样,您的代码在大部分情况下都能正常工作)。
 
 
 
也就是说。。。这是完成这项任务的另一种方式。。。目前我唯一没有时间做的事情是首先对写入的结果实体数据进行排序。CSV由弧、圆、椭圆组成(不是要求的,而是我的强迫症真正想要包含的内容):
 
  1. (vl-load-com)
  2. (defun c:XYT (/ *error* path acApp oShell f acDoc nArc nCircle nEllipse
  3.              origin oSpace height style objectName i oMtext
  4.             )
  5. (defun *error* (msg)
  6.    (if f
  7.      (progn (close f) (vl-file-delete path))
  8.    )
  9.    (if acDoc
  10.      (vla-endundomark acDoc)
  11.    )
  12.    (if oShell
  13.      (vlax-release-object oShell)
  14.    )
  15.    (cond ((not msg))                                                   ; Normal exit
  16.          ((member msg '("Function cancelled" "quit / exit abort")))    ; <esc> or (quit)
  17.          ((princ (strcat "\n** Error: " msg " ** ")))                  ; Fatal error, display it
  18.    )
  19.    (princ)
  20. )
  21. (if (and (setq path (getfiled "Specify .CSV file name:"
  22.                                (getvar 'dwgprefix)
  23.                                "csv"
  24.                                1
  25.                      )
  26.           )
  27.           (ssget '((0 . "ARC,CIRCLE,ELLIPSE")))
  28.           (princ "\nWorking, please wait... ")
  29.           (princ)
  30.           (setq oShell (vla-getinterfaceobject
  31.                          (setq acApp (vlax-get-acad-object))
  32.                          "Shell.Application"
  33.                        )
  34.           )
  35.      )
  36.    (progn
  37.      (setq f (open path "w"))
  38.      (write-line
  39.        "Serial Number:,X:,Y:,Dia (Major):,Dia (Minor):,Type:"
  40.        f
  41.      )
  42.      (write-line "" f)
  43.      (vla-startundomark
  44.        (setq acDoc (vla-get-activedocument acApp))
  45.      )
  46.      (setq nArc 0)
  47.      (setq nCircle 0)
  48.      (setq nEllipse 0)
  49.      (setq origin (vlax-3d-point '(0.0 0.0 0.0)))
  50.      (setq oSpace (vlax-get acDoc
  51.                             (if (= 1 (getvar 'cvport))
  52.                               'paperspace
  53.                               'modelspace
  54.                             )
  55.                   )
  56.      )
  57.      (setq height (getvar 'textsize))
  58.      (setq style (getvar 'textstyle))
  59.      (vlax-for x (vla-get-activeselectionset acDoc)
  60.        ;; mtext
  61.        (setq oMtext
  62.               (vla-addmtext
  63.                 oSpace
  64.                 origin
  65.                 0.0
  66.                 (setq i
  67.                        (cond
  68.                          ((= "AcDbArc"
  69.                              (setq objectName (vla-get-objectname x))
  70.                           )
  71.                           (strcat "A" (itoa (setq nArc (1+ nArc))))
  72.                          )
  73.                          ((= "AcDbCircle" objectName)
  74.                           (strcat "C" (itoa (setq nCircle (1+ nCircle))))
  75.                          )
  76.                          ((= "AcDbEllipse" objectName)
  77.                           (strcat "E" (itoa (setq nEllipse (1+ nEllipse))))
  78.                          )
  79.                        )
  80.                 )
  81.               )
  82.        )
  83.        (vla-put-height oMtext height)
  84.        (vla-put-stylename oMtext style)
  85.        (vla-put-attachmentpoint oMtext acattachmentpointmiddlecenter)
  86.        (vla-move oMtext
  87.                  (vla-get-insertionpoint oMtext)
  88.                  (vlax-3d-point (setq center (vlax-get x 'center)))
  89.        )
  90.        ;; write
  91.        (write-line
  92.          (strcat i
  93.                  ","
  94.                  (rtos (car center))
  95.                  ","
  96.                  (rtos (cadr center))
  97.                  ","
  98.                  (if (= "AcDbEllipse" objectName)
  99.                    (strcat (rtos (vla-get-majorradius x))
  100.                            ","
  101.                            (rtos (vla-get-minorradius x))
  102.                    )
  103.                    (strcat (rtos (vla-get-radius x)) "," "")
  104.                  )
  105.                  ","
  106.                  (vl-string-subst "" "AcDb" objectName)
  107.          )
  108.          f
  109.        )
  110.      )
  111.      (setq f (close f))
  112.      (vlax-invoke oShell 'open path)
  113.      (princ "Done. ")
  114.      (prompt "\n** UNDO will not delete the resultant .CSV file created ** ")
  115.    )
  116. )
  117. (*error* nil)
  118. )

 
干杯
回复

使用道具 举报

12

主题

395

帖子

384

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 06:59:55 | 显示全部楼层
 
我完全同意。问题是,我试图坚持他们原来的Lisp程序,这样他们可能会更好地遵循。我个人使用vla命令创建excel文件。也许本周晚些时候,如果其他人没有做到这一点,我会推出一个更流线型的版本。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 07:02:46 | 显示全部楼层
 
... 我(错了?)我以为我就是这么做的。
回复

使用道具 举报

12

主题

395

帖子

384

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 07:09:50 | 显示全部楼层
 
Lol.对不起。这已经是漫长的一周了。
 
我真的只是想让它成为一个真正的excel文件,而不是以前发布的文件或csv。
 
我在通读你的密码。我真的很喜欢你的方法。更干净。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 07:11:48 | 显示全部楼层
 
别担心;我只是在开玩笑。。。我的提议很简单,是供他人考虑的提议。
 
 
 
 
你这么说真是太好了;非常感谢。
回复

使用道具 举报

24

主题

147

帖子

123

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-6 07:16:19 | 显示全部楼层
对我来说,Commandobill的Lisp程序很好用。我看到Blackbox的lisp在错误处理方面很好,但它缺少了一些功能,比如允许用户选择原点,然后转换到ucs,不添加文本。
 
除此之外,我还通过插入一个数据链接表将lisp提升到了一个新的层次,并使用J.Villareal的实用程序将其带回AutoCAD。
 
餐桌风格(标准)是我最大的障碍之一。我无法修改标准表格样式并重复使用它。无法另存为标准模板。有什么想法吗?或者我应该把它作为一个单独的线程发布?
071403qjtljc7tut7zm0mq.jpg
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 18:56 , Processed in 0.857581 second(s), 75 queries .

© 2020-2025 乐筑天下

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