明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1589|回复: 4

[公告] 求解决个错误。。。。请各位老大出手谢谢~

[复制链接]
发表于 2013-4-3 13:31 | 显示全部楼层 |阅读模式
5明经币
本帖最后由 flytoday 于 2013-4-3 13:32 编辑

求解决
; 错误: no function definition: TBC:DXFS


(DEFUN C:tbCount (/ Main Unique fuzz)
  (defun Main (/ tmp el SS en enType acme1 acme2 ids1 ids2 lst SSet)
    (setq SS   (TBC:GetEnts
                 '((0 . "CIRCLE,INSERT,LINE,LWPOLYLINE,TEXT,MTEXT"))
               )
          SSet (ssadd)
          fuzz 0.01 ;指定位置坐标点的误差
    )
    (foreach el        SS
      (setq en           (entget el)
            enType (TBC:DXF 0 en)
            acme1  nil
            acme2  nil
      )
      (cond ((= enType "CIRCLE")
             (setq ids1        '(0 40)
                   ids2        '(10)
             )
            )
            ((= enType "INSERT")
             (setq ids1        '(0 2 41 42 43 44 45 50 66 70 71)
                   ids2        '(10)
             )
            )
            ((= enType "LINE")
             (setq ids1        '(0)
                   ids2        '(10 11)
             )
            )
            ((= enType "LWPOLYLINE")
             (setq ids1         '(0 43 70 90)
                   ids2         '()
                   acme1 '(40 41 42)
                   acme2 '(10)
             )
            )
            ((= enType "TEXT")
             (setq ids1        '(0 1 7 40 50 51 71 72 73)
                   ids2        '(10 11)
             )
            )
            ((= enType "MTEXT")
             (setq ids1        '(0 1 7 40 41 42 43 44 50 71 72 73)
                   ids2        '(10 11)
             )
            )
      )
      (setq ids1 (TBC:DXFS ids1 en)
            ids1 (append ids1 (mapcar '(lambda (x) (TBC:mDXF x en)) acme1))
            ids2 (TBC:DXFS ids2 en)
            ids2 (append ids2 (mapcar '(lambda (x) (TBC:mDXF x en)) acme2))
            tmp         (list ids1 ids2)
      )
      (if (Unique tmp lst)
        (setq SSet (ssadd el SSet)
              lst  (append lst (list tmp))
        )
      )
    )
    (sssetfirst nil SSet)
    (TBC:Command '("regen") nil)
    (princ)
  )
  (defun Unique (el lst / a b)
    (setq a (car el)
          b (cadr el)
    )
    (if        lst
      (vl-every
        '(lambda (x)
           (not (and (equal a (car x)) (equal b (cadr x) fuzz)))
         )
        lst
      )
      T
    )
  )
  (Main)
)
  ;选择指定过滤条件的实体名表
(defun TBC:GetEnts (filter / i n SSET enName RSET)
  (setq        SSET (ssget filter)
        n    (if SSET
               (sslength SSET)
               0
             )
        i    0
  )
  (while (< i n)
    (setq enName (ssname SSET i)
          RSET         (cons enName RSET)
          i         (1+ i)
    )
  )
  (reverse RSET)
)
  ;取出表中的元素值
(defun TBC:DXF (code lst)
  (cdr (assoc code lst))
)
  ;取出表中的同一代码的多个元素值
(defun TBC:mDXF        (code en / tmp i lst)
  (setq i 0)
  (while (setq i (TBC:FindAt code en i))
    (setq tmp (cdr (nth i en))
          i   (1+ i)
          lst (append lst (list tmp))
    )
  )
  lst
)
  ;执行Command函数
(defun TBC:Command (paralist varlist / tmp i n el oldvar)
  (setq        varlist        (append varlist (list (list "CMDECHO" 0)))
        n        (length varlist)
        i        0
  )
  (while (< i n)
    (setq el         (nth i varlist)
          tmp         (list (getvar (car el)))
          oldvar (append oldvar tmp)
          i         (1+ i)
    )
    (setvar (car el) (cadr el))
  )
  (foreach el paralist (command el))
  (setq i 0)
  (while (< i n)
    (setq el  (nth i varlist)
          tmp (nth i oldvar)
          i   (1+ i)
    )
    (setvar (car el) tmp)
  ))

点评

哪来的程序找谁去!  发表于 2013-4-3 14:06
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2013-4-3 13:47 | 显示全部楼层
(defun TBC:DXFS (code lst)
  (cdr (assoc code lst))
)
或者
(defun TBC:DXFS (code lst)
  (cdr (assoc code (ENTGET LST)))
)
一个个加载上试试

评分

参与人数 1明经币 +1 收起 理由
flytoday + 1 谢谢试过了不行~~

查看全部评分

回复

使用道具 举报

发表于 2013-4-3 14:25 | 显示全部楼层
试试加上这两个函数试试吧:

(defun TBC:DXFS (ids en)
  (vl-remove nil (mapcar '(lambda (x) (assoc x en)) ids))
  )
(defun TBC:FindAt (code en i)
  (repeat i
    (setq en (cdr en))
    )
  (if (setq a (assoc code en))
    (+ i (VL-POSITION a en))
    )
  )

评分

参与人数 1明经币 +1 收起 理由
flytoday + 1 顾哥。。重复的没删除掉~~~谢顾哥~

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-4-3 17:06 | 显示全部楼层
本帖最后由 flytoday 于 2013-4-3 18:45 编辑

顾哥还有哪位高手能不能将选择到重叠的那个删除了啊~~~~~~~~~~~~~~~~~~~~~~~~~
回复

使用道具 举报

 楼主| 发表于 2013-4-4 14:10 | 显示全部楼层
统计图元个数(位置相同的同种重叠图元只计一个),并删除重叠的园元留下一个。。。

想达到这个效果。。请各位老大出手帮帮忙谢了。。。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 14:50 , Processed in 0.291969 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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