乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 2|回复: 2

[编程交流] 在中列出图案填充和线性对象

[复制链接]

2

主题

4

帖子

2

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 18:11:21 | 显示全部楼层 |阅读模式
大家好,
 
底部显示了一个例程,该例程可以向Excel提供图形中线型对象的摘要视图。超级方便的工具。
 
这个程序运行得很好,只是有一些粗糙的边缘需要锉掉。
 
这两个问题:
 
问题1:
在给出第二列并将列长度滑动到第三列时,方便地在文本“小计”中使用excel。
这只是为了简化数据以按字母顺序排序。
这可能吗?
 
问题2:
是否有可能在图案填充的第二个选项卡中生成总表面积。
每层每平方米。
 
那太好了。
 
问候和感谢。
巴特
 
  1. (defun c:ple (/   elist    en     i      layer    layer_list
  2.      leng    pline     row      ss       sumlen   total
  3.      x    xlApp     xlBook   xlBooks  xlCells  xlSheet
  4.      xlSheets
  5.          )
  6. (vl-load-com)
  7. (setq   xlApp      (vlax-get-or-create-object "Excel.Application")
  8.   xlBooks  (vlax-get-property xlApp "Workbooks")
  9.   xlBook      (vlax-invoke-method xlBooks "Add")
  10.   xlSheets (vlax-get-property xlBook "Sheets")
  11.   xlSheet      (vlax-get-property xlSheets "Item" 1)
  12.   xlCells      (vlax-get-property xlSheet "Cells")
  13. )
  14. (vla-put-visible xlApp :vlax-true)
  15. ;headers
  16. (vlax-put-property xlCells "Item" 1 1 "Layer")
  17. (vlax-put-property xlCells "Item" 1 2 "Length")
  18. (setq row 2
  19.   total 0)
  20. (setq ss (ssget "_X" (list (cons 0 "*POLYLINE"))) i -1)
  21. (repeat (sslength ss)
  22.    (setq en (ssname ss (setq i (1+ i)))
  23.     elist (entget en)
  24.     layer (cdr (assoc 8 elist)))
  25.    (if (not (member layer layer_list))
  26.      (setq layer_list (cons layer layer_list))))
  27. (repeat (length layer_list)
  28.    (setq layer (car layer_list))
  29.    (vlax-put-property xlCells "Item" row 1 layer)
  30.    (setq ss (ssget "_X" (list (cons 0 "*POLYLINE")(cons 8 layer))) i -1 sumlen 0)
  31.    (repeat (sslength ss)
  32.    (setq row (1+ row))  
  33.    (setq pline (vlax-ename->vla-object (ssname ss (setq i (1+ i)))))
  34.    (setq leng  (vlax-curve-getdistatparam pline
  35.        (vlax-curve-getendparam pline)))
  36.    (vlax-put-property xlCells "Item" row 2 (rtos leng 4 3))
  37.        (vlax-put-property xlCells "Item" row 2 (rtos leng 2 3)); for metric units  
  38.    (setq sumlen (+ sumlen leng)))
  39.    (setq row (1+ row))
  40.    (vlax-put-property xlCells "Item" row 1 "SubTotal:")
  41.    (vlax-put-property xlCells "Item" row 2 (rtos sumlen 4 3))
  42.    (setq total (+ total sumlen))
  43.    (vlax-put-property xlCells "Item" row 2 (rtos sumlen 2 3)); for metric units
  44.    (setq layer_list (cdr layer_list))
  45.    (setq row (+ row 2))
  46.    
  47. )
  48. ; footers:
  49. (vlax-put-property xlCells "Item" row 1 "Total:")
  50. (vlax-put-property xlCells "Item" row 2 (rtos total 4 3))
  51. (vlax-put-property xlCells "Item" row 2 (rtos total 2 3)); for metric units  
  52. (mapcar (function (lambda(x)
  53.          (vl-catch-all-apply
  54.            (function (lambda()
  55.              (progn
  56.                (vlax-release-object x)
  57.                (setq x nil)))))))
  58. (list xlCells xlSheet xlSheets xlBook xlBooks xlApp)
  59. )
  60. (alert "Close Excel file manually")
  61. (gc)(gc)
  62. (princ)
  63. )
  64. (princ "\t\t***\t  Type PLE to write polines length to Excel\t***")
  65. (princ)
回复

使用道具 举报

95

主题

477

帖子

383

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
475
发表于 2022-7-5 19:08:08 | 显示全部楼层
对于图案填充的面积,我将使用vla get area函数,然后将每个选定图案填充相加。这里有一个很好的例子说明了如何做到这一点:https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/sum-of-hatch-areas-lisp-routine-modification/td-p/2071424
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 19:24:25 | 显示全部楼层
您好,如果您不在输出文件中格式化something属性,我更喜欢另存为*。csv
 
然后使用控制字符的strcat,例如tab=“\t”更容易
 
AFAIK创建文本文件比创建excel文件更快。。
 
  1. (strcat (rtos total 1 3)"\t M"(chr 178))
  2. ;"123.400\t M²"
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-12 19:47 , Processed in 1.934296 second(s), 58 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表