明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 890|回复: 6

[提问] 哪位大神帮看看问题出在哪

[复制链接]
发表于 2017-11-8 20:32:06 | 显示全部楼层 |阅读模式
想做个批量封闭区域文字输出到TXT的程序,每个封闭区域内有编号,面积(亩),户主姓名等.要求每个封闭区域内的文字输出到txt为一行
单个封闭区域程序没大问题
(defun c:tt  (/ en ent ptl ss)
        (vl-load-com)
  (setq file1 (getfiled "文件保存在" "d:/" "TXT" 1))
  (setq file2 (open file1 "W"))
  (if (setq ent (entsel))
    (progn
      (setq en (car ent))
      (setq ptl (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget en))))
      (setq ss (ssget "wp" ptl '((0 . "*text"))))
                        (setq n (sslength ss))
      (setq i 0)
                        (setq ss2 " ")
                 (while (< i n)
                        (setq ss1 (cdr(assoc 1 (entget(ssname ss i)))))
      (setq ss2  (strcat ss1 "," ss2))
                        (setq i (1+ i))
           )
                        (write-line ss2 file2)
    )
  )
        (close file2)
  (princ)
)

可是改成批量就出错了
(defun c:tt  (/ en ent ptl ss)
        (vl-load-com)
  (setq file1 (getfiled "文件保存在" "d:/" "TXT" 1))
  (setq file2 (open file1 "a"))
  (if (setq ent (ssget '((0 . "*POLYLINE"))))
    (progn
                        (setq n1 (sslength ent))
                        (setq i1 0)
                        (while  (< i1 n1)
      (setq en (ssname ent i1))
                        (setq ptl (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget en))))
      (setq ss (ssget "wp" ptl '((0 . "*text"))))
                        (setq n (sslength ss))
      (setq i 0)
                        (setq ss2 " ")
                 (while (< i n)
                        (setq ss1 (cdr(assoc 1 (entget(ssname ss i)))))
      (setq ss2  (strcat ss1 "," ss2))
                        (setq i (1+ i))
           )
                        (write-line ss2 file2)
                        (setq i1 (1+ i1))       
    )
                )
  )
        (close file2)
  (princ)
)
哪位大神帮看看帮修改下,谢谢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

点评

上dwg诊断  发表于 2017-11-8 20:43
发表于 2017-11-8 20:57:58 | 显示全部楼层
未经测试

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2017-11-8 22:55:27 | 显示全部楼层

谢谢大师,测试在框选范围内都是封闭区域数据导出正常,要是有其它未封闭多段线就乱了,看来还要加个判断是否闭合的语句
 楼主| 发表于 2017-11-8 23:33:55 | 显示全部楼层

    (while (setq s1 (ssname ss (setq i (1+ i))))
                        (if (vlax-curve-isClosed s1)
      (write-line (GetTx s1) fn)))测试通过,谢谢大师
发表于 2017-11-9 09:07:17 | 显示全部楼层
lifuq1979 发表于 2017-11-8 23:33
(while (setq s1 (ssname ss (setq i (1+ i))))
                        (if (vlax-curve-isClosed s1)
      (write-li ...

(if (equal (vlax-curve-getStartPoint s1)
           (vlax-curve-getEndPoint s1)
    )
  (write-line (GetTx s1) fn)
)
发表于 2017-11-10 09:09:11 | 显示全部楼层
回帖是一种美德!感谢楼主的无私分享 谢谢

评分

参与人数 1明经币 -3 收起 理由
xyp1964 -3

查看全部评分

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-20 01:48 , Processed in 0.177661 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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