找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1410|回复: 4

[求助] 剪切后的多义线沿剪切边批量闭合怎么老出错

[复制链接]
发表于 2013-5-16 10:34:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
本帖最后由 GTJ116600 于 2013-5-16 10:41 编辑

我做了一个剪切后的多义线沿剪切边批量闭合,但是不知道为什么在家里调试没有问题,在单位调试老出错,麻烦各位版主,高人给诊诊脉
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;按计算三角形oij的倍面积(呵呵此次直接利用前辈成果);;;;;;;;;;;;;;;;;;;;
(defun calo2A (pti ptj)
  (- (* (car pti) (cadr ptj)) (* (car ptj) (cadr pti)))
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;判断多段线是否为逆时针走向,ename图元必须为LWPOLYLINE;呵呵此次直接利用前辈成果
(defun clockwisep(ename / ptlist)
  (setq ptlist (apply 'append
               (mapcar '(lambda (x) (if (= 10 (car x)) (list(cdr x))))
               (entget ename))))
  (>  (apply '+ (mapcar 'calo2A (cons (last ptlist)(reverse (cdr (reverse ptlist)))) ptlist))
    0
  )
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;获取实体内部一点坐标函数;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun get-ent-inpt(ent)
      (vl-load-com)
      (setq ifTNill (clockwisep ent))
      (if (= ifTNill T)
          (setq dist -1)
          (setq dist 1)
       )
      (setq obj (vlax-ename->vla-object ent))   
      (setq obj1 (vla-offset obj dist))     
      (setq ent1 (entlast))
      (setq entlist (entget ent1))
      (setq n 0 ent_list t m 1)
      (while ent_list
             (setq en (nth n entlist))
             (if (= (car en) 10)
                 (progn
                        (if (/= m 2)
                            (setq n (1+ n) m (1+ m))
                            (setq pt (cdr en) ent_list nil)
                        )
                 )
                 (setq n (+ 1 n) ent_list (nth n entlist))
             )
       )
      (entdel ent1)
      (command "change" ent "" "p" "c" 3  "")
      pt
;      (princ pt)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;获取PL实体点表函数;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun get-pl-ptlist(entname / entlist n ptlists ent_list en ptlist)
        (setq entlist (entget entname))
        (setq n 0 ptlists nil ent_list t)
        (while ent_list
             (setq en (nth n entlist))
             (setq ptlist (cdr en))
             (if (= (car en) 10)
                 (setq ptlists (cons ptlist ptlists))
             )
             (setq n (1+ n) ent_list (nth n entlist))
       )
       (setq ptlists (reverse ptlists))
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;建立选择集函数 (待补充考虑多义线闭合问题);;;;;;;;;;;;;;;;;;;;;;         
(defun get-ptss( / trline)
       (setq trline (entsel "\n请选择剪切线"))
       (setq entname1 (car trline))
       (setq ptlists (get-pl-ptlist entname1))
       (princ ptlists)      
       (setq s1 (ssget "cp" ptlists '((0 . "*polyline")(70 . 0))))
       (princ s1)
;       (setq s1 (ssget "cp" ptlists '((0 . "*polyline"))))
;       (princ s1)
       (princ "\n选择集的长度")
       (princ (sslength s1))
;      (setq s2 (ssget "wp" ptlists '((0 . "*polyline"))))
;      (setq s3 (ssget "cp" ptlists '((0 . "*polyline")(70 . 1))))
       (setq num 0 ptlist nil m 0)      
       (while (> (sslength s1) num)
              (setq ent (ssname s1 num))
              (princ ent)
              (setq pt (get-ent-inpt ent) num (1+ num) ptlist (cons pt ptlist))
              (princ pt)
       )
       (princ ptlist)
       (princ "\n打印一点坐标")
       (princ (nth m ptlist))
       (setq m1 0 num1 0)
       (command  "-boundary")
       (while (> (length ptlist) m1)                     
              (command (nth m1 ptlist))
              (princ "\n打印循环内点坐标")
              (princ (nth m1 ptlist))
              (setq m1 (1+ m1))        
       )        
       (command "")
       (while (> (sslength s1) num1)
              (setq ent (ssname s1 num1))
              (entdel ent)
              (setq num1 (+ num1 1))
       )
       (setq s1 nil)         
)

未标题-1.jpg

new.rar

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

调试图形文件

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

已领礼包: 6468个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 2688个

财富等级: 家财万贯

发表于 2013-5-16 11:52:19 | 显示全部楼层
测试了下,没有问题!不知楼主测试时,有什么错误提示?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-16 13:07:48 | 显示全部楼层
本帖最后由 GTJ116600 于 2013-5-16 13:17 编辑
zyhandw 发表于 2013-5-16 11:52
测试了下,没有问题!不知楼主测试时,有什么错误提示?


有的却实体莫名其妙的没有被选择上,有的被删掉了,闭合的多义线却没有生成
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2688个

财富等级: 家财万贯

发表于 2013-5-16 14:09:07 | 显示全部楼层
GTJ116600 发表于 2013-5-16 13:07
有的却实体莫名其妙的没有被选择上,有的被删掉了,闭合的多义线却没有生成

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 14:29 , Processed in 0.387225 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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