明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2121|回复: 7

求承台下桩标注统计增加修改代码

[复制链接]
发表于 2011-12-30 10:42 | 显示全部楼层 |阅读模式
1明经币
原贴处
(源码)



1、解释下本代码中的依据测试图中指定的数据写的,哪些,代表什么意思(就是不通用部份的)
2、增加输出
指定承台名的数量:如ZH7-2共几个,ZH7-2承台下桩有几个

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2011-12-30 10:42 | 显示全部楼层
本帖最后由 feng582304 于 2011-12-30 14:30 编辑
  1. (defun feng-zct-pmin-pmax ( s1 / pmax pmin )
  2.   (setq s1 (vlax-ename->vla-object s1))
  3.   (vla-GetBoundingBox s1 'pmin 'pmax)
  4.   (MAPCAR '(LAMBDA (x)
  5.        (trans (MAPCAR 'fix (vlax-safearray->list x)) 0 1)
  6.        )
  7.     (list pmin pmax)
  8.     )
  9.   )
  10. (defun feng-zct-ssget ( filter poli n / ss li )
  11.   (setq ss (ssget "c" (car poli) (cadr poli) filter))
  12.   (if ss
  13.     (cond
  14.       ((= n 1) (ssname ss 0))
  15.       (t (repeat (setq n (sslength ss)) (setq li (cons (ssname ss (setq n (1- n))) li))))
  16.       )
  17.     nil
  18.     )
  19.   )
  20. (defun feng-get-insertionpoint ( s1 )
  21.   (trans (vlax-safearray->list (vlax-variant-value (vla-get-InsertionPoint s1))) 0 1)
  22.   )
  23. (defun feng-zct-addtext ( ms st stylename po num / pp obj)
  24.   (if (null (TBLSEARCH "LAYER" "桩编号")) (vla-add (vla-get-layers (vla-get-ActiveDocument (vlax-get-acad-object))) "桩编号"))
  25.   (MAPCAR '(LAMBDA (x)
  26.        (vla-put-layer (vla-addline ms (vlax-3d-point (trans (car x) 1 0)) (vlax-3d-point (trans (cadr x) 1 0))) "桩编号")
  27.        )
  28.     (list
  29.       (list po (setq pp (MAPCAR '+ po '(350 350 0))))
  30.       (list pp (MAPCAR '+ pp '(1200 0 0)))
  31.       )
  32.     )
  33.   (vla-put-layer (setq obj (vla-addtext ms (strcat st "(" (itoa num) ")") (vlax-3d-point (trans (MAPCAR '+ pp '(100 100 0)) 1 0)) feng-heigth)) "桩编号")
  34.   (vla-put-StyleName obj stylename)
  35.   )
  36. (defun feng-ssget->list ( ss / li n )
  37.   (repeat (setq n (sslength ss))
  38.     (setq li (cons (ssname ss (setq n (1- n))) li))
  39.     )
  40.   )
  41. (defun feng-zct-obj ( ss / li n yx pp tt s1 )
  42.   (setq ss (MAPCAR '(LAMBDA (x);选承台线
  43.           (FENG-ZCT-SSGET '((8 . "Ct") (0 . "*POLYLINE")) x nil)
  44.           )
  45.        (MAPCAR '(LAMBDA (x);引线框
  46.             (list (MAPCAR '+ (car x) '(-10 -10 0)) (MAPCAR '+ (cadr x) '(10 10 0)))
  47.             )
  48.          (MAPCAR 'FENG-ZCT-PMIN-PMAX
  49.            (setq yx (MAPCAR '(LAMBDA (x);选引线
  50.                    (FENG-ZCT-SSGET '((0 . "*LINE") (8 . "Jno")) x 1)
  51.                    )
  52.                 (MAPCAR '(LAMBDA (x);编号框
  53.                      (list (MAPCAR '+ (car x) '(0 -300 0)) (cadr x))
  54.                      )
  55.                   (MAPCAR 'FENG-ZCT-PMIN-PMAX
  56.                     (FENG-SSGET->LIST (ssget "x" (list (assoc 8 ss) (assoc 0 ss) (assoc 1 ss))))
  57.                     ))))))))
  58.   (setq ss (MAPCAR 'FENG-ZCT-PMIN-PMAX
  59.        (MAPCAR '(LAMBDA (x y)
  60.             (if (= (length x) 1)
  61.         (car x)
  62.         (progn
  63.           (setq n -1 tt t)
  64.           (while tt
  65.             (setq pp (vlax-variant-value (vla-IntersectWith (vlax-ename->vla-object y) (vlax-ename->vla-object (setq s1 (nth (setq n (1+ n)) x))) acExtendNone)))
  66.             (if (> (vlax-safearray-get-u-bound pp 1) 0) (setq pp (vlax-safearray->list pp) tt nil))
  67.             )
  68.           s1
  69.           )
  70.         )
  71.             )
  72.          ss yx
  73.          )
  74.        )
  75.   )
  76.   (setq li (MAPCAR '(LAMBDA (x) (list (car (cadr x)) (cadr (cadr x)) 0)) ss))
  77.   (setq ss (MAPCAR '(LAMBDA (x)
  78.           (MAPCAR 'vlax-ename->vla-object (FENG-ZCT-SSGET '((0 . "INSERT") (8 . "Ct") (2 . "ZH100")) x nil))
  79.           )
  80.        ss
  81.        )
  82.   )
  83.   (setq li (vl-sort (VL-SORT (MAPCAR 'cons li ss) '(LAMBDA (x y) (< (car (car x)) (car (car y))))) '(LAMBDA (x y) (> (cadr (car x)) (cadr (car y))))))
  84.   (setq li (MAPCAR '(LAMBDA (x)
  85.           (MAPCAR 'FENG-GET-INSERTIONPOINT
  86.             (vl-sort (vl-sort (cdr x) '(LAMBDA (y z) (< (car (FENG-GET-INSERTIONPOINT y)) (car (FENG-GET-INSERTIONPOINT z)))))
  87.                '(LAMBDA (y z) (> (cadr (FENG-GET-INSERTIONPOINT y)) (cadr (FENG-GET-INSERTIONPOINT z))))
  88.                )
  89.             )
  90.           )
  91.        li
  92.        )
  93.   )
  94.   li
  95.   )
  96. (defun c:feng-zct ( / ss stylename li ms st num )
  97.   (VL-LOAD-COM)
  98.   (princ "\n=============请选择承台编号==============")
  99.   (setq ss (ssget ":E:S" '((0 . "*TEXT") (8 . "Jno"))))
  100.   (if (car (setq feng-heigth (list (getdist (STRCAT "\n请输入字高<" (if feng-heigth (itoa feng-heigth) (progn (setq feng-heigth 200) "200")) ">:")) feng-heigth)))
  101.     (setq feng-heigth (fix (car feng-heigth)))
  102.     (setq feng-heigth (cadr feng-heigth))
  103.     )
  104.   (if ss (vl-cmdf "undo" "be" "zoom" "e"))
  105.   (if ss
  106.     (progn
  107.       (setq ms (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object)))
  108.       li (feng-zct-obj (entget (ssname ss 0)))
  109.       stylename (cdr (assoc 7 (setq ss (entget (ssname ss 0)))))
  110.       st (cdr (assoc 1 ss))
  111.       num 0
  112.       )
  113.       (MAPCAR '(LAMBDA (x)
  114.      (MAPCAR '(LAMBDA (y)
  115.           (FENG-ZCT-ADDTEXT ms st stylename y (setq num (1+ num)))
  116.           )
  117.        x
  118.        )
  119.      )
  120.         li
  121.         )
  122.       )
  123.     )
  124.   (if ss (progn
  125.      (vl-cmdf "zoom" "p" "undo" "e")
  126.      (princ (strcat "\n==================\n" st "承台:" (itoa (sslength (ssget "x" (list (assoc 8 ss) (assoc 0 ss) (assoc 1 ss)))))"个====桩:" (itoa num) "个\n===make by feng==="))
  127.      )
  128.     )
  129.   (princ)
  130.   )

回复

使用道具 举报

 楼主| 发表于 2011-12-30 13:19 | 显示全部楼层
看来最近高手都很忙哈。。。。哪位有空路过瞧瞧哈。。。。帮帮忙不胜感激
回复

使用道具 举报

 楼主| 发表于 2011-12-30 14:01 | 显示全部楼层
本帖最后由 flytoday 于 2011-12-30 14:02 编辑

feng582304 能不改成能输出TXT或EXL格式的。。桩数与承台各种编号的数量啊

能不能给我讲下。。这个代码是哪些表示本图纸固有的,。不通用的啊谢谢~~
回复

使用道具 举报

发表于 2011-12-30 14:11 | 显示全部楼层
本帖最后由 feng582304 于 2011-12-30 14:15 编辑
flytoday 发表于 2011-12-30 14:01
feng582304 能不改成能输出TXT或EXL格式的。。桩数与承台各种编号的数量啊

能不能给我讲下。。这个代码是 ...


如果说你所有桩都编号完成后,可以做个输出啊。
里面本图纸固有的也就那些承台编号的图层名、承台编号引线的图层名以是引线是多段线、桩块的块名以及图层名。在代码里面你找一个这些东西所在的那一句就是啦。
其实在网站里面有很多文字统计的例子啦,你可以找一下。
还有就是我只针对你的样图进行测试,你最好自己也要做个测试,以免图纸标注错漏,不要过分依懒自动化。
回复

使用道具 举报

 楼主| 发表于 2011-12-30 14:12 | 显示全部楼层
哦谢啦
回复

使用道具 举报

发表于 2011-12-30 14:31 | 显示全部楼层
flytoday 发表于 2011-12-30 14:12
哦谢啦

重新更新了一下:点编号后,最后给出编号有多少个,桩有多少个。
回复

使用道具 举报

 楼主| 发表于 2011-12-30 15:08 | 显示全部楼层
太强大了顶起哈谢谢~~
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-2 10:06 , Processed in 0.177936 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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