明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5007|回复: 17

500币求面积提取输出EXL

  [复制链接]
发表于 2011-12-12 19:30 | 显示全部楼层 |阅读模式
1明经币
本帖最后由 flytoday 于 2011-12-12 21:47 编辑

第一步:软件输入指定命令。。画abc线,并能附于它长度属性值。
第二步:选取所画板中交叉线,定义板编号,弹出对话框,手工输入板厚值。
第三步:输入指定命令,属性提取输出EXL
  图纸图一输出图2
附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

给你写了一段,看能否满足要求?为简便起见,输出的结果到CSV文件! 命令:TT 画十字交叉线,该命令将所划线自动变成无名块,并添加如下属性:板编号、板厚、a线长度、b线长度、c线长度,长度值默认为直线长度!,双击块可编辑属性,录入板编号、板厚 命令:tt1 自动输出cSV文件!文件默认存在"c:\\data.csv"

点评

xpy1964院长的作品,你请他往下编下这个 :)  发表于 2011-12-12 20:33
对G版和大师们来说,估计弄出来也就是吃顿饭的时间吧  发表于 2011-12-12 20:03
财主啊  发表于 2011-12-12 19:50
呵呵,真下血本啊!  发表于 2011-12-12 19:37
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2011-12-12 19:30 | 显示全部楼层
本帖最后由 Gu_xl 于 2011-12-14 18:31 编辑

给你写了一段,看能否满足要求?为简便起见,输出的结果到CSV文件!
命令:TT 画十字交叉线,该命令将所划线自动变成无名块,并添加如下属性:板编号、板厚、a线长度、b线长度、c线长度,长度值默认为直线长度!,双击块可编辑属性,录入板编号、板厚
命令:tt1 自动输出cSV文件!文件默认存在"c:\\data.csv"
  1. ;;;构造匿名块
  2. (defun MakeUnNameBlock (ss pt h a b c bh thickness / count entlist ent blk)
  3. (setq pt (trans pt 1 0))
  4.   (entmake (list '(0 . "BLOCK")
  5.    '(2 . "*U")
  6.    '(70 . 3)
  7.    (cons 10 pt)
  8.     )
  9.   )
  10.   (setq count 0)
  11.   (repeat (sslength ss)
  12.     (setq entlist (entget (setq ent (ssname ss count))))
  13.     (setq count (1+ count))
  14.     (entmake entlist)
  15.   )
  16.   (setq count 0)
  17.   (repeat (sslength ss)
  18.     (setq ent (ssname ss count))
  19.     (setq count (1+ count))
  20.     (entdel ent)
  21.   )
  22.   (setq blk (entmake '((0 . "ENDBLK"))))
  23.   (regapp "flytoday")
  24.   (if blk
  25.     (progn
  26.       (entmake (list (cons 0 "INSERT")
  27.        '(100 . "AcDbEntity")
  28.        '(100 . "AcDbBlockReference")
  29.        '(66 . 1) ;_ 属性跟随标志,1跟随,0不跟随
  30.        (cons 2 blk)
  31.        (cons 10 pt)
  32.        (cons 41 1.0)
  33.        (cons 42 1.0)
  34.        (cons 43 1.0)
  35.        '(-3 ("flytoday" (1000 . "flytoday")))
  36.         )
  37.       )
  38. ;;;插入板编号属性
  39.       (entmake (list
  40.    '(0 . "ATTRIB")
  41.    '(100 . "AcDbEntity")
  42.    '(100 . "AcDbText")
  43.    (cons 10 pt)
  44.    (cons 40 h)
  45.    (cons 50 0)
  46.    (cons 41 0.8)
  47.    (cons 51 0)
  48.    (cons 1 bh)
  49.    (cons 7 "Standard")
  50.    (cons 72 0)
  51.    (cons 11 pt)
  52.    '(100 . "AcDbAttribute")
  53.    (cons 2 "板编号")
  54.    (cons 70 0)
  55.    (cons 74 2)
  56.         )
  57.       )
  58. ;;;插入厚度属性
  59.       (entmake (list
  60.    '(0 . "ATTRIB")
  61.    '(100 . "AcDbEntity")
  62.    '(100 . "AcDbText")
  63.    (cons 10 (polar pt (* -0.5 pi) (* 1.5 h)))
  64.    (cons 40 h)
  65.    (cons 50 0)
  66.    (cons 41 0.8)
  67.    (cons 51 0)
  68.    (cons 1 thickness)
  69.    (cons 7 "standard")
  70.    (cons 72 0)
  71.    (cons 11 (polar pt (* -0.5 pi) (* 1.5 h)))
  72.    '(100 . "AcDbAttribute")
  73.    (cons 2 "厚度")
  74.    (cons 70 0)
  75.    (cons 74 2)
  76.         )
  77.       )
  78. ;;;插入a线长度属性
  79.       (entmake (list
  80.    '(0 . "ATTRIB")
  81.    '(100 . "AcDbEntity")
  82.    '(100 . "AcDbText")
  83.    (cons 10 (polar pt (* -0.5 pi) (* 3 h)))
  84.    (cons 40 h)
  85.    (cons 50 0)
  86.    (cons 41 0.8)
  87.    (cons 51 0)
  88.    (cons 1 a)
  89.    (cons 7 "standard")
  90.    (cons 72 0)
  91.    (cons 11 (polar pt (* -0.5 pi) (* 3 h)))
  92.    '(100 . "AcDbAttribute")
  93.    (cons 2 "a线长度")
  94.    (cons 70 1)
  95.    (cons 74 2)
  96.         )
  97.       )
  98. ;;;插入b线长度属性
  99.       (entmake (list
  100.    '(0 . "ATTRIB")
  101.    '(100 . "AcDbEntity")
  102.    '(100 . "AcDbText")
  103.    (cons 10 (polar pt (* -0.5 pi) (* 4.5 h)))
  104.    (cons 40 h)
  105.    (cons 50 0)
  106.    (cons 41 0.8)
  107.    (cons 51 0)
  108.    (cons 1 b)
  109.    (cons 7 "standard")
  110.    (cons 72 0)
  111.    (cons 11 (polar pt (* -0.5 pi) (* 4.5 h)))
  112.    '(100 . "AcDbAttribute")
  113.    (cons 2 "b线长度")
  114.    (cons 70 1)
  115.    (cons 74 2)
  116.         )
  117.       )
  118.       (if c
  119. ;;;插入c线长度属性
  120. (entmake (list
  121.      '(0 . "ATTRIB")
  122.      '(100 . "AcDbEntity")
  123.      '(100 . "AcDbText")
  124.      (cons 10 (polar pt (* -0.5 pi) (* 6 h)))
  125.      (cons 40 h)
  126.      (cons 50 0)
  127.      (cons 41 0.8)
  128.      (cons 51 0)
  129.      (cons 1 c)
  130.      (cons 7 "standard")
  131.      (cons 72 0)
  132.      (cons 11 (polar pt (* -0.5 pi) (* 6 h)))
  133.      '(100 . "AcDbAttribute")
  134.      (cons 2 "c线长度")
  135.      (cons 70 1)
  136.      (cons 74 2)
  137.    )
  138. )
  139.       )
  140. ;;;结束标志
  141.       (entmake '((0 . "SEQEND")))
  142.     )
  143.   )
  144.   blk
  145. )
  146. ;;;构造线
  147. (defun makeline (p1 p2)
  148.   (entmake (list (cons 0 "line")
  149.    (cons 10 (trans p1 1 0))
  150.    (cons 11 (trans p2 1 0))
  151.     )
  152.   )
  153. )
  154. ;;;MakeText 生成文字函数,参数: 标注点 文字 字高 宽比 旋转角 倾角
  155. (defun MakeText (xy Txt ZG KB XZ Qj / xyL TxtL ZGL KBL XZL QJL)
  156.    (setq xy (trans xy 1 0));;;坐标换算为世界坐标
  157.       (setq xyL  (cons 10 xy)
  158.      TxtL (cons 1 Txt)
  159.      ZGL  (cons 40 ZG)
  160.      KBL  (cons 41 KB)
  161.      XZL  (cons 50 XZ)
  162.      QJL  (cons 51 QJ)
  163.       )
  164.       (setq TextL (list '(0 . "TEXT")
  165.    '(67 . 0)
  166.    '(100
  167.      .
  168.      "AcDbText"
  169.     )
  170.    xyL
  171.    ZGL
  172.    TxtL
  173.    XZL
  174.    KBL
  175.    QJL
  176.    '(7 . "standard")
  177.     )
  178.       )
  179.       (entmake TextL)
  180.     )
  181. ;;;计算两点的中点
  182. (defun MidPoint (p1 p2)
  183.   (if (and (> (length p1) 2)(> (length p2) 2))
  184.       (list (* 0.5 (+ (car p1) (car p2))) (* 0.5 (+ (cadr p1) (cadr p2))) (* 0.5 (+ (caddr p1) (caddr p2))))
  185.       (list (* 0.5 (+ (car p1) (car p2))) (* 0.5 (+ (cadr p1) (cadr p2))))
  186.   )  
  187.   )
  188. ;;;划线程序
  189. (defun c:tt (/      OLDERR  OSMODE  CMDECHO ORTHOMODE      
  190.       SS      A      B      C      P1      P2      P3
  191.       P4      P0      KD      FLAG *error*
  192.      )
  193.   (defun *error* (msg)
  194.     (setq *error* olderr)
  195.     (Setvar "osmode" osmode)
  196.     (Setvar "cmdecho" cmdecho)
  197.     (Setvar "orthomode" orthomode)
  198.     (princ msg)
  199.   )
  200.   (setq olderr *error*)
  201.   (setq osmode (getvar "osmode"))
  202.   (Setvar "osmode" 687)
  203.   (setq cmdecho (getvar "cmdecho"))
  204.   (Setvar "cmdecho" 0)
  205.   (setq orthomode (getvar "orthomode"))
  206.   (Setvar "orthomode" 1)
  207.   (or txtHeight
  208.       (setq txtHeight (getreal "\n输入字高<2>:"))
  209.   )
  210.   (if (null txtHeight)
  211.     (setq txtHeight 2)
  212.   )
  213.   (while (not flag)
  214.     (setq ss (ssadd)
  215.    a  nil
  216.    b  nil
  217.    c  nil
  218.     )
  219.     (princ "\n绘a线:")
  220.     (initget 7)
  221.     (setq p1 (getpoint "\n直线第一点:"))
  222.     (initget 7)
  223.     (setq p2 (getpoint p1 "\n直线第二点:"))
  224.     (makeline p1 p2)
  225.     (setq a (rtos (distance p1 p2) 2 3))
  226.     (ssadd (entlast) ss)
  227.     (MakeText (midpoint p1 (MidPoint p1 p2)) "a" txtHeight 0.8 0 0)
  228.     (ssadd (entlast) ss)
  229.     (princ "\n绘b线:")
  230.     (initget 7)
  231.     (setq p3 (getpoint "\n直线第一点:"))
  232.     (initget 7)
  233.     (setq p4 (getpoint p3 "\n直线第二点:"))
  234.     (makeline p3 p4)
  235.     (setq b (rtos (distance p3 p4) 2 3))
  236.     (ssadd (entlast) ss)
  237.     (MakeText (midpoint p3 (MidPoint p3 p4)) "b" txtHeight 0.8 0 0)
  238.     (ssadd (entlast) ss)
  239.     ;(setq p0 (inters p1 p2 p3 p4 nil))
  240.     (setq p0 (midpoint
  241.         (apply 'mapcar (cons 'min (list p1 p2 p3 p4)))
  242.        (apply 'mapcar (cons 'max (list p1 p2 p3 p4)))
  243.         )
  244.    )
  245.     (progn
  246. (princ "\n绘c线:")
  247. (if (and
  248.        (setq p1 (getpoint "\n直线第一点:"))
  249.        (setq p2 (getpoint p1 "\n直线第二点:"))
  250.      )
  251.    (progn
  252.      (makeline p1 p2)
  253.      (ssadd (entlast) ss)
  254.      (setq c (rtos (distance p1 p2) 2 3))
  255.     (MakeText (midpoint p1 (MidPoint p1 p2)) "c" txtHeight 0.8 0 0)
  256.     (ssadd (entlast) ss)
  257.    )
  258. )
  259.       (setq bh (getstring "\n板编号:"))
  260.       (setq thickness (getreal"\n厚度:"))
  261.       (if (null thickness) (setq thickness "") (setq thickness (rtos thickness 2 3)))
  262. (MakeUnNameBlock ss p0 txtHeight a b c bh thickness)
  263. (initget 7 "Yes No  ")
  264. (setq Kd (getkword "\n[继续Yes/No]<Yes>"))
  265. (setq Flag (= kd "No"))
  266.       )
  267.   )
  268.   (setq *error* olderr)
  269.   (Setvar "osmode" osmode)
  270.   (Setvar "cmdecho" cmdecho)
  271.   (Setvar "orthomode" orthomode)
  272.   (princ)
  273. )
  274. ;;;双击图块,通过属性输入板编号和厚度值
  275. ;;;导出数据(c:tt1)
  276. (defun c:tt1  (/ SS F N EN LL ENL BBH THICKNESS A B C filename data)
  277.   (setq ss (ssget (list '(0 . "insert") '(-3 ("flytoday")))))
  278.   (if ss
  279.     (progn
  280.       (setq filename (getfiled "保存文件名" "data" "csv" 1))
  281.       (if filename
  282. (progn
  283.    (if (findfile filename)
  284.      (setq f (open filename "a")) ;_ 文件已存在,自动追加
  285.      (progn
  286.        (setq f (open filename "w")) ;_ 文件不存在,新建文件
  287.        (write-line ",a,b,c,板厚" f)
  288.        )
  289.      )
  290.    (repeat (setq n (sslength ss))
  291.      (setq en (ssname ss (setq n (1- n))))
  292.      (setq ll nil)
  293.      (while
  294.        (and (setq en (entnext en))
  295.      (= "ATTRIB"
  296.         (cdr (assoc 0 (setq enl (entget en)))))
  297.      )
  298.         (setq ll (cons (cdr (assoc 1 enl)) ll))
  299.         )
  300.      (if ll
  301.        (progn
  302.   (setq data (cons (reverse ll) data))
  303.   )
  304.        )
  305.      )
  306.    (setq data
  307.    (vl-sort data
  308.      '(lambda (a b)
  309.         (< (atof (cadr a)) (atof (cadr b))))))
  310.    (foreach ll  data
  311.      (setq bbh     (car ll)
  312.     thickness (cadr ll)
  313.     a     (caddr ll)
  314.     b     (cadddr ll)
  315.     c     (car (cddddr ll))
  316.     )
  317.      (WRITE-LINE
  318.        (strcat bbh
  319.         ","
  320.         a
  321.         ","
  322.         b
  323.         ","
  324.         (if c
  325.    c
  326.    ""
  327.    )
  328.         ","
  329.         thickness
  330.         )
  331.        f
  332.        )
  333.      )
  334.    (close f)
  335. ;(startapp "notepad.exe" filename)
  336.    )
  337. )
  338.       )
  339.     )
  340.   (princ)
  341.   )




评分

参与人数 1明经币 +1 收起 理由
flytoday + 1 老大给改改嘛,,您这个您改改应该就能用了.

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2011-12-12 19:46 | 显示全部楼层
不知道哪位大侠愿意停下你的脚步研究下哈。。。
就算哪位大侠有兴趣挑战下哈。。。。。。。。。
回复

使用道具 举报

发表于 2011-12-12 19:51 | 显示全部楼层
顶一个高手出来,我对面积方面可是一窍不通!
回复

使用道具 举报

 楼主| 发表于 2011-12-12 20:46 | 显示全部楼层
qjchen  xpy1964院长的作品,你请他往下编下这个 :)  发表于 11 分钟前

院长啊偶哪请滴动晕。。我等等。。。等,。。。。。
回复

使用道具 举报

发表于 2011-12-12 21:08 | 显示全部楼层
完善这个还是有一定的工作量,LZ何不先自己试着折腾一下...
回复

使用道具 举报

 楼主| 发表于 2011-12-12 21:18 | 显示全部楼层
折腾不了。。扑腾下也没有办法
回复

使用道具 举报

发表于 2011-12-12 22:12 | 显示全部楼层
算工程量?顶你哦
回复

使用道具 举报

发表于 2011-12-12 22:50 | 显示全部楼层
财主
回复

使用道具 举报

 楼主| 发表于 2011-12-12 23:08 | 显示全部楼层
本帖最后由 flytoday 于 2011-12-12 23:13 编辑

Gu_xl   老大谢谢您。。但是您那个。。字高我怎么输入后不会。体现a,b字样啊。。。
还有那个双击输入不了板编号与板厚啊
还有
这种情况不效啊

不过真很感谢您很热心了
能改改吗

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-11 17:42 , Processed in 0.198905 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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