乐筑天下

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

[编程交流] C3D路线长度报告

[复制链接]

8

主题

45

帖子

37

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 22:27:36 | 显示全部楼层 |阅读模式
你好
 
我正在尝试使用此报告:
 
http://blog.civil3dreminders.com/2012/03/alignment​-长度报告。html
 
但这些文件似乎适用于C3D 2011,不会与2012一起使用。最后有一些东西解释了如果您使用的是差异版本的C3D,该怎么办。我只是想知道是否有人可以调整文件,使其在2012年工作?我真的不擅长VBA。太令人困惑了。
 
干杯
马丁
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-6 22:34:09 | 显示全部楼层
您有Microsoft Visual Basic for Applications模块吗?
回复

使用道具 举报

8

主题

45

帖子

37

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 22:35:12 | 显示全部楼层
是的,我下载并安装了它。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 22:41:40 | 显示全部楼层
伙计们,
 
作者最初是用VBA编写代码的。
 
上面链接的博客文章演示了如何使用VB实现类似的插件。NET(因此出现了Visual Studio屏幕截图)。不需要VBA模块。
 
 
实际上,插件的工作原理与宣传的完全一样。。。刚刚使用Civil 3D 2012进行了测试。。。我个人认为这比必要的工作要多(使用Microsoft.Office.Interop.Excel库,当写入一个简单的CSV时可以),但它仍然有效。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 22:46:16 | 显示全部楼层
... 此外,FWIW-我*相信*因为这最初是通过ActiveX COM API完成的,所以仍然有一种方法可以使用Visual LISP(它也使用ActiveX COM API)来完成。
 
查看AeccXUiLand。AeccApplication对象:
 
  1. (vl-load-com)
  2. (defun c:C3dComApi (/ file)
  3. (if
  4.    (setq
  5.        file (findfile
  6.               (strcat
  7.                 (vl-registry-read
  8.                   (strcat "HKEY_LOCAL_MACHINE\"
  9.                           (if vlax-user-product-key                    ; If 2013
  10.                             (vlax-user-product-key)                    ; Use 2013 function
  11.                             (vlax-product-key)                         ; Use legacy function
  12.                           )
  13.                   )
  14.                   "ACADLOCATION"
  15.                 )
  16.                 "\\help\\civil_api_activex_reference.chm"
  17.               )
  18.             )
  19.      )
  20.    (startapp "explorer" file)
  21.    (prompt "\n** File not found ** ")
  22. )
  23. (princ)
  24. )
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 22:47:43 | 显示全部楼层
这是一个最近的(尽管不相关)示例,请参阅第4篇:
 
http://www.theswamp.org/index.php?topic=42585.0
回复

使用道具 举报

8

主题

45

帖子

37

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 22:50:45 | 显示全部楼层
当我尝试运行该程序时,它会出现以下错误:
 
232740seeecgzsjmqjslhz.png
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 22:55:17 | 显示全部楼层
232744q566wxxxhwtbbbje.png
 
... 这是因为插件引用了Microsoft。办公室互操作。Excel库,并且在您的系统上找不到它(依赖引用)。我将看看我能做些什么来提供一个不具有这种依赖性的自适应,而是使用basic。改为CSV。
回复

使用道具 举报

8

主题

45

帖子

37

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 22:57:46 | 显示全部楼层
 
那太好了,非常感谢你的帮助
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 23:04:00 | 显示全部楼层
我喜欢事情比我想象的简单的时候。。。Autodesk似乎很友善地将路线对象特性公开给Visual LISP;没有Aecxuiland。此任务所需的AeckApplication接口对象。
 
享受
 
  1. (vl-load-com)
  2. (defun c:ALR () (c:AlignmentsLengthReport))
  3. (defun c:AlignmentsLengthReport (/ *error*)
  4. (princ "\rALIGNMENTSLENGTHREPORT ")
  5. (defun *error* (msg)
  6.    (if file
  7.      (close file)
  8.    )
  9.    (if oShell
  10.      (vlax-release-object oShell)
  11.    )
  12.    (cond ((not msg))                                                   ; Normal exit
  13.          ((member msg '("Function cancelled" "quit / exit abort")))    ; <esc> or (quit)
  14.          ((princ (strcat "\n** " msg " ** ")))                         ; Fatal error, display it
  15.    )
  16.    (princ)
  17. )
  18. ((lambda (acApp / ss oShell filePath file alignmentName alignmentLength)
  19.     (if (and (setq ss (ssget "_x" '((0 . "AECC_ALIGNMENT"))))
  20.              (setq oShell (vla-getinterfaceobject
  21.                             acApp
  22.                             "Shell.Application"
  23.                           )
  24.              )
  25.              (setq filePath
  26.                     (strcat
  27.                       (vl-filename-directory
  28.                         (vl-filename-mktemp)
  29.                       )
  30.                       "\\Alignments Length Report_"
  31.                       (menucmd
  32.                         "M=$(edtime,$(getvar,date),YYYY-MO-DD)"
  33.                       )
  34.                       ".csv"
  35.                     )
  36.              )
  37.              (princ "\nWorking, please wait... ")
  38.              (princ)
  39.         )
  40.       (progn
  41.         (setq file (open filePath "w"))
  42.         (write-line "Civil 3D Drawing:" file)
  43.         (write-line
  44.           (strcat (getvar 'dwgprefix) (getvar 'dwgname))
  45.           file
  46.         )
  47.         (write-line "" file)
  48.         (write-line "Alignment Name:,Length:" file)
  49.         (vlax-for x (setq ss (vla-get-activeselectionset (vla-get-activedocument acApp)))
  50.           (if (and (setq alignmentName (vlax-get x 'name))
  51.                    (setq alignmentLength (rtos (vlax-get x 'length)))
  52.               )
  53.             (write-line (strcat alignmentName "," alignmentLength) file)
  54.           )
  55.         )
  56.         (vla-delete ss)
  57.         (princ "Done.")
  58.         (setq file (close file))
  59.         (vlax-invoke oShell 'open filePath)
  60.         (*error* nil)
  61.       )
  62.       (cond
  63.         (ss
  64.          (*error*
  65.            "Error: Unable to create "Shell.Application" Object"
  66.          )
  67.         )
  68.         ((*error* "No alignments found"))
  69.       )
  70.     )
  71.   )
  72.    (vlax-get-acad-object)
  73. )
  74. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 11:45 , Processed in 0.551304 second(s), 74 queries .

© 2020-2025 乐筑天下

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