乐筑天下

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

[编程交流] 提取块p的属性

[复制链接]

4

主题

11

帖子

7

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 07:46:59 | 显示全部楼层 |阅读模式
你好
 
是否可以提取特定图形中块的特性(即块名称、x坐标、y坐标和旋转),并打印逗号分隔的文本文件输出?
 
示例文本文件输出如下所示:
 
谢谢。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:57:47 | 显示全部楼层
查看DATAEXTRACTION命令。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 08:02:20 | 显示全部楼层
数据提取更为完整,我最近碰巧编写了一些类似的代码,我想我会发布。从这里拿走你想要的。
 
  1. (defun c:BlockProp  (/ *error* ss path acApp acDoc oShell file coord)
  2. ;; RenderMan, 2012
  3. (princ "\rBLOCKPROP ")
  4. (vl-load-com)
  5. (defun *error*  (msg)
  6.    (if oShell (vlax-release-object oShell))
  7.    (if file (close file))
  8.    (cond ((not msg))                                                   ; Normal exit
  9.          ((member msg '("Function cancelled" "quit / exit abort")))    ; <esc> or (quit)
  10.          ((princ (strcat "\n** Error: " msg " ** "))))                 ; Fatal error, display it
  11.    (princ))
  12. (if (and (setq ss (ssget "_x" '((0 . "INSERT"))))
  13.           (setq path
  14.                  (strcat (vl-filename-directory (vl-filename-mktemp))
  15.                          "\\Block Properties.csv"))
  16.           (setq acApp (vlax-get-acad-object))
  17.           (setq acDoc (vla-get-activedocument acApp))
  18.           (setq oShell
  19.                  (vla-getinterfaceobject acApp "Shell.Application")))
  20.    (progn
  21.      (setq file (open path "w"))
  22.      (write-line "BLOCK PROPERTIES" file)
  23.      (write-line "" file)
  24.      (write-line
  25.        (strcat "Drawing:, , " (getvar 'dwgprefix) (getvar 'dwgname))
  26.        file)
  27.      (write-line
  28.        (strcat "Date:, , "
  29.                (menucmd "M=$(edtime,$(getvar,date),YYYY-MO-DD)"))
  30.        file)
  31.      (write-line "" file)
  32.      (write-line "NAME, X, Y, Z, ROTATION" file)
  33.      (vlax-for oBlock
  34.                (setq ss (vla-get-activeselectionset acDoc))
  35.        (write-line
  36.          (strcat
  37.            (vla-get-effectivename oBlock)
  38.            ","
  39.            (rtos
  40.              (car (setq coord (vlax-get oBlock 'insertionpoint))))
  41.            ","
  42.            (rtos (cadr coord))
  43.            ","
  44.            (rtos (caddr coord))
  45.            ","
  46.            (rtos (vla-get-rotation oBlock)))
  47.          file))
  48.      (setq file (close file))
  49.      (vlax-invoke oShell 'open path)
  50.      (*error* nil))
  51.    (*error* "No blocks found")))
回复

使用道具 举报

4

主题

11

帖子

7

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 08:05:10 | 显示全部楼层
谢谢大家。数据提取命令提供了非常详细的输出和非常强大的功能。RenderMan,太酷了,我从没想过lisp能做到这一点。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 08:15:54 | 显示全部楼层
 
由于我不需要这个命令,我经常忘记它(因此代码)。
 
 
你这么说真是太好了;李和其他许多人帮助我学到了很多我现在知道的东西。
回复

使用道具 举报

4

主题

11

帖子

7

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 08:17:19 | 显示全部楼层
RenderMan,我遇到了一个错误,没有打开临时文件下的csv文件。我刚刚修改了路径名,效果很好。以下是适用于我的代码:
 
  1. (defun c:BlockProp  (/ *error* ss path acApp acDoc oShell file coord)
  2. ;; RenderMan, 2012
  3. (princ "\rBLOCKPROP ")
  4. (vl-load-com)
  5. (defun *error*  (msg)
  6.    (if oShell (vlax-release-object oShell))
  7.    (if file (close file))
  8.    (cond ((not msg))                                                   ; Normal exit
  9.          ((member msg '("Function cancelled" "quit / exit abort")))    ; <esc> or (quit)
  10.          ((princ (strcat "\n** Error: " msg " ** "))))                 ; Fatal error, display it
  11.    (princ))
  12. (if (and (setq ss (ssget "_x" '((0 . "INSERT"))))
  13.           (setq path C:\\Users\\ZAGM01373\\Documents\\Batman.csv") ;Please change this to your preferred file path and name
  14.           (setq acApp (vlax-get-acad-object))
  15.           (setq acDoc (vla-get-activedocument acApp))
  16.           (setq oShell
  17.                  (vla-getinterfaceobject acApp "Shell.Application")))
  18.    (progn
  19.      (setq file (open path "w"))
  20.      (write-line "BLOCK PROPERTIES" file)
  21.      (write-line "" file)
  22.      (write-line
  23.        (strcat "Drawing:, , " (getvar 'dwgprefix) (getvar 'dwgname))
  24.        file)
  25.      (write-line
  26.        (strcat "Date:, , "
  27.                (menucmd "M=$(edtime,$(getvar,date),YYYY-MO-DD)"))
  28.        file)
  29.      (write-line "" file)
  30.      (write-line "NAME, X, Y, Z, ROTATION" file)
  31.      (vlax-for oBlock
  32.                (setq ss (vla-get-activeselectionset acDoc))
  33.        (write-line
  34.          (strcat
  35.            (vla-get-effectivename oBlock)
  36.            ","
  37.            (rtos
  38.              (car (setq coord (vlax-get oBlock 'insertionpoint))))
  39.            ","
  40.            (rtos (cadr coord))
  41.            ","
  42.            (rtos (caddr coord))
  43.            ","
  44.            (rtos (vla-get-rotation oBlock)))
  45.          file))
  46.      (setq file (close file))
  47.      (vlax-invoke oShell 'open path)
  48.      (*error* nil))
  49.    (*error* "No blocks found")))
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 08:26:52 | 显示全部楼层
这很奇怪,因为它(我发布的代码)不仅在我这方面工作得很好,而且根据开发人员文档,它使用了您环境的临时设置。
 
有关vl Filename Mktemp函数的详细信息。
 
与其硬编码每个用户的位置,不如识别一个适用于您的设置的公共目录,并使用(getvar的loginname)消除每个用户修改的需要。只是一个想法。
回复

使用道具 举报

4

主题

11

帖子

7

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 08:33:53 | 显示全部楼层
我又试了一次,现在可以用了。我不知道为什么昨天命令后csv文件没有打开。可能问题是我没有等足够长的时间让lisp打开它,因为我试了几次,然后被迫手动定位文件。
 
非常感谢,我将使用你的原始代码。
回复

使用道具 举报

51

主题

481

帖子

457

银币

后起之秀

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

铜币
262
发表于 2022-7-6 08:38:00 | 显示全部楼层
代码中的错误是
  1. (defun c:BlockProp
  2. ...
  3.           (setq path [color="red"]C[/color]:\\Users\\ZAGM01373\\Documents\\Batman.csv")

 
应该是
  1. 4
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 08:43:27 | 显示全部楼层
好话题Bª™ªN
 
这也非常慷慨地让你分享了RenderMan的代码,谢谢你,
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 21:43 , Processed in 0.429451 second(s), 72 queries .

© 2020-2025 乐筑天下

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