找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4179|回复: 20

[已解决] 从多个图形文件中提取坐标时不能更新选择集问题

[复制链接]
发表于 2013-7-15 17:21:21 | 显示全部楼层 |阅读模式
悬赏20D豆已解决
本帖最后由 newer 于 2021-2-4 05:32 编辑

我做一个批量提取坐标文件,中间涉及到从从多个图形文件中提取坐标问题,顺次打开每个图形建立选择集时,选择集中实体不能更新(还是原实体名称),选择集名称能更新,不知是什么原因,求大神帮助解决?
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;错误处理函数;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun zyj-silenceexit( / *error*)
       (t (setq *error* strcat))
)
;;;;;;;;;;;;;;;;;;;;;;三、选择集转化为表;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun zyj-ss->enlist(ss / en i lst)
    (setq lst '())     
    (repeat (setq i (sslength ss))
       (setq en (ssname ss (setq i (1- i))))
       (setq lst (cons en lst))
    )
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;一、得到多段线顶点的点表;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun zyj-getplpt(en / a)      
   (mapcar 'cdr
      (vl-remove-if '(lambda(a) (/= (car a) 10) )
         (entget en)
      )
   )
)
;;;;;;;;;;;;;;;;;;;;;;;;;;把坐标表文件输入到TXT文本中;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun outtxt(datalist fn)
    (setq num (length datalist))
    (repeat num
       (setq txt (car datalist))
       (princ txt fn)
       (princ "\n")
       (setq datalist (cdr datalist))
    )
    fn
)      
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;主程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:putdata( / ffn ph fn i n n1 fn1 fn2 fn3 str int len lst)
    (setq Vcmdecho (getvar "cmdecho") Vosmode (getvar "osmode"))
    (setvar "cmdecho" 0)
    (setvar "osmode" 0)
    (setq fffn (getfiled " 打开文件 "  "" "dwg" 2))
    (or fffn (zyj-silenceexit))
    (setq ph (vl-filename-directory fffn))
    (setq fn (vl-directory-files ph "*.dwg" 1))  ;返还指定目录下所有dwg文件名称
    (princ fn)
    (setq i -1)
    (repeat (length fn)
       (setq n1 (nth (setq i (1+ i)) fn)
             fn1 (strcat (vl-string-subst "/" "\\" ph) "/" n1)    ;得到第一图形名称
             fn2 (strcat "d:/" (itoa (1+ i)) ".txt")
       )
       (princ fn1)
       (setq fn3 (open fn1 "r"))
       (setq ss (ssget "x" '((0 . "*POLYLINE"))))
       (close fn3)                                ;读取图形数据结束
       (or ss (zyj-silenceexit))                  
       (princ ss)
       (princ (sslength ss))
       (princ "\n")
       (setq enlist (zyj-ss->enlist ss))          ;将选择集转换为实体表
       (princ enlist)
       (princ (length enlist))
   )
)

exedwg.rar

25.06 KB, 下载次数: 4, 下载积分: D豆 -1 , 活跃度 1

测试图形

最佳答案

查看完整内容

怎么可能没有收获?!当然没有现成的,有方法啊!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-7-15 17:21:22 | 显示全部楼层
GTJ116600 发表于 2013-7-17 14:39
谢谢热心帮助,搜了,一无所获

怎么可能没有收获?!当然没有现成的,有方法啊!
  1. (defun c:tt (/ *acad* dbxdoc fl)
  2.   (setq *acad* (vlax-get-acad-object)
  3. DBXDoc (vla-GetInterfaceObject
  4.    *acad*
  5.    (if (< (setq acVer (atoi (getvar "ACADVER"))) 16)
  6.      "ObjectDBX.AxDbDocument"
  7.      (strcat "ObjectDBX.AxDbDocument." (itoa acVer))
  8.    )
  9.         )
  10.   )
  11.   (if (setq fl (getfiled "" "" "dwg" 4))
  12.     (vla-open DBXDoc fl)
  13.     (vlax-for obj dbxdoc
  14.       (if (wcmatch (vla-get-objectname obj) "*POLYLINE")
  15. (progn
  16.    (setq pts (vlax-get obj 'Coordinates))
  17. )
  18. .....
  19.       )
  20.     )
  21.   )
  22.   (princ)
  23. )


评分

参与人数 1D豆 +5 收起 理由
GTJ116600 + 5 热心帮忙奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

 楼主| 发表于 2013-7-15 17:40:46 | 显示全部楼层
自己先顶一个。
这是不正常提示:
Command: putdata
(1.dwg 4.dwg 2.dwg 3.dwg)   

D:/exedwg/1.dwg<Selection set: 37>1  (<Entity name: 7ef5ae88>)1

D:/exedwg/4.dwg<Selection set: 39>1   (<Entity name: 7ef5ae88>)1

D:/exedwg/2.dwg<Selection set: 3b>1  (<Entity name: 7ef5ae88>)1

D:/exedwg/3.dwg<Selection set: 3d>1  (<Entity name: 7ef5ae88>)1

虽然选择集名称不同,但实体名称相同,选择集长度也项目。
正常应该是选择集名称不同,实体名称也不同,选择集长度根据实体多少确定

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-7-15 19:27:14 | 显示全部楼层
你用 FOPEN 读DWG图? 那是读文本文件的。

点评

谢谢指点。那怎样能实现批量读取文件呢?  详情 回复 发表于 2013-7-15 20:25
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

 楼主| 发表于 2013-7-15 20:25:13 | 显示全部楼层
本帖最后由 GTJ116600 于 2013-7-15 20:39 编辑
newer 发表于 2013-7-15 19:27
你用 FOPEN 读DWG图? 那是读文本文件的。


谢谢指点。那怎样能实现批量读取图形文件呢?

点评

用 读取外部DWG 做关键字搜索论坛,很多讨论。  详情 回复 发表于 2013-7-15 20:58
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

发表于 2013-7-15 20:57:32 来自手机 | 显示全部楼层
读文件要用DBX方法来自: Android客户端

点评

麻烦Free-Lancer能给个链接么。找了,没有找到  详情 回复 发表于 2013-7-17 11:14
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-7-15 20:58:22 | 显示全部楼层
GTJ116600 发表于 2013-7-15 20:25
谢谢指点。那怎样能实现批量读取图形文件呢?

用 读取外部DWG 做关键字搜索论坛,很多讨论。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

 楼主| 发表于 2013-7-17 11:14:32 | 显示全部楼层
Free-Lancer 发表于 2013-7-15 20:57
读文件要用DBX方法

麻烦Free-Lancer能给个链接么。找了,没有找到

点评

搜 另类purgr,G版写的是DBX方式  详情 回复 发表于 2013-7-17 13:18
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-7-17 13:18:11 来自手机 | 显示全部楼层
GTJ116600 发表于 2013-7-17 11:14
麻烦Free-Lancer能给个链接么。找了,没有找到

搜 另类purgr,G版写的是DBX方式

点评

谢谢热心帮助,搜了,一无所获  详情 回复 发表于 2013-7-17 14:39
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

 楼主| 发表于 2013-7-17 14:39:52 | 显示全部楼层
st788796 发表于 2013-7-17 13:18
搜 另类purgr,G版写的是DBX方式

谢谢热心帮助,搜了,一无所获

点评

怎么可能没有收获?!当然没有现成的,有方法啊!  详情 回复 发表于 2013-7-17 16:08
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2013-10-14 21:53:25 | 显示全部楼层
比较土一点的办法就是 插入到图里面,取了所有信息后再删除或undo,再插入下一张。

当然要注意每张图的 insbase要设置对

点评

对少量图可以,大量图,很快会耗尽内存。  详情 回复 发表于 2013-10-14 22:06
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-10-14 22:06:34 | 显示全部楼层
aeo 发表于 2013-10-14 21:53
比较土一点的办法就是 插入到图里面,取了所有信息后再删除或undo,再插入下一张。

当然要注意每张图的 i ...

对少量图可以,大量图,很快会耗尽内存。

点评

aeo
undo 应该没问题  发表于 2013-10-14 23:54
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

发表于 2021-1-3 10:01:14 | 显示全部楼层
参考学习一下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-23 00:25 , Processed in 0.492091 second(s), 57 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表