乐筑天下

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

[编程交流] 区域标签更改

[复制链接]

3

主题

12

帖子

9

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 08:58:48 | 显示全部楼层 |阅读模式
你好
 
我开始使用MAC LEE的程序区域标签,但我有一些问题,如果可以更改的话。
必须说,这是一个好节目。
我从事土木工程,我开始使用这个程序计算剖面中多段线的面积。现在结果是成排的,我试图在哥伦布得到它,但很不幸。我换了桌子,但结果在哥伦布不成立。
我想知道是否有可能在哥伦比亚获得结果(挖掘、路堤、砾石、腐殖质等)。这有助于轻松计算材料的体积。附加将能够结束一个配置文件并启动另一个配置文件,但在下一行中,然后将结果附加到上一个配置文件的表中。另外,程序如何读取层的名称,然后将其排序到适当的列中,这将是早期定义的(挖掘、路堤、砾石、腐殖质-表中的列,然后我将单击纵断面中砾石的多段线,程序将在砾石列中支持result,而不是在第一列的开头)。这将是有用的,因为一些配置文件没有相同的材料。
现在,如果这是一个简单的项目(不是很多配置文件),我用Civil做配置文件,因为它得到的配置文件是dinamic的,如果它是更改的东西,它支持它和计算,但它需要很多时间来做一个好的表面。我们有一些其他的剖面程序,但不是dinamic,我们必须单独绘制材料,如果我们改变面积,我们可以手动更改结果(excel)并计算它,。。。
现在,如果一切都可以在AC中完成,那么我们可以取出选项卡,将其插入excel,或者我们可以执行AF(到文件),然后在excel中修复它,。。。
 
类似这样(我们必须将材料的体积与轮廓一起添加)。
095852q9ttiuq5du8ghnzg.jpg
普里卡兹。xls公司
回复

使用道具 举报

3

主题

12

帖子

9

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 09:09:35 | 显示全部楼层
我在这里写这个是因为我不能在你的页面上做连接(这是一个好页面,有用)
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:15:11 | 显示全部楼层
我很高兴你能发现我的程序很有用,但是我不希望修改这个程序到你描述的程度,以满足一个人的需要。
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 09:17:08 | 显示全部楼层
只是想一下负荷。。。您是否可以使用Excel的VLookup/HLoopkup函数来实现您想要的?一、 e.从Lee代码生成的“表”您只需将其用作“数据库”的形式,然后生成的表使用Excel的一个或多个查找公式从Lee代码生成的表中提取相关数据项。
 
这是我过去从通过数据提取生成的表中执行的操作。我保留了那个文件,所以只要我需要更新这些区域,我就可以简单地覆盖它。然后只需打开我计算的Excel文件,更新就会自动提取。
回复

使用道具 举报

3

主题

12

帖子

9

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 09:21:58 | 显示全部楼层
Irneb thanx,我会试着用这个做点什么,。。。。
现在问题更严重了,因为我还需要多段线的名称,因为我在命名层上有所有多段线。现在我可以把这些数字复制到excel中,但它不是dinamic。现在我必须修改LEE的代码,这个表将支持多段线的层和面积的nam,但我正在尝试,但我不像LEE那样是程序员,并尝试使用excel。
首先我用eattext做了这个,但我们必须在超链接上做所有的配置文件,然后在excel中编辑它。(但我想要迪纳米克)
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 09:27:55 | 显示全部楼层
我不知道“动态”。。。也许您应该更深入地研究数据提取(您可以指定哪一层上哪种类型的实体的哪些属性等,然后将其放置在XLS文件的各个列中)。但我不确定你到底想要什么。
回复

使用道具 举报

3

主题

12

帖子

9

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 09:34:24 | 显示全部楼层
我宁愿使用eattext,也不愿导出到excel。
  1. (defun C:FA  (/ acsp adoc cpt elist en ent fld lead_obj lpt mtx oid osm)
  2. (vl-load-com)
  3. (or adoc
  4.      (setq adoc
  5.         (vla-get-activedocument
  6.           (vlax-get-acad-object)
  7.           )
  8.        )
  9.      )
  10. (if (and
  11.    (= (getvar "tilemode") 0)
  12.    (= (getvar "cvport") 1)
  13.    )
  14.    (setq acsp (vla-get-paperspace adoc))
  15.    (setq acsp (vla-get-modelspace adoc))
  16.    )
  17. (setq osm (getvar "osmode"))
  18. (setvar "osmode" 0)
  19. (while
  20.    (setq ent (entsel "\nSelect pline or hit Enter to exit"))
  21.     (setq en (car ent))
  22.     (if (wcmatch (cdr (assoc 0 (setq elist (entget en)))) "*POLYLINE")
  23.       (progn
  24.     (setq cpt (trans (cadr ent)1 0)
  25.           lpt (trans (getpoint cpt "\nPick the ending point of leader:") 1 0)
  26.           )
  27.     (setq oID (vla-get-objectid (vlax-ename->vla-object en)))
  28.     (setq fld
  29.        (strcat
  30.          (strcat "%<\\AcObjProp Object(%<\\_ObjId "
  31.              (itoa oID)
  32.              ">%).Layer \\f "%lu2%pr2">%" " = " "%<\\AcObjProp Object(%<\\_ObjId "
  33.              (itoa oID)
  34.              ">%).Area \\f "%lu2%pr2">%" " M2 "
  35.              ))  
  36.           )
  37.     (setq mtx (vlax-invoke
  38.             acsp 'AddMText lpt 0.0 fld)
  39.           )
  40.     (vlax-put mtx
  41.           'AttachmentPoint
  42.           (cond ((> (car cpt) (car lpt))
  43.              6
  44.              )
  45.             ((< (car cpt) (car lpt))
  46.              4
  47.              )
  48.             (T 4)
  49.             )
  50.           )
  51.     (vlax-put mtx 'Height (getvar "textsize"))
  52.     )
  53.       )
  54.     )
  55. (setvar "osmode" osm)
  56. (princ)
  57. )
  58. (princ "\n Start command with FA ...")
  59. (princ)

或将做的表格,然后使用
  1. (defun C:AREATT ( / en obj tblobj row col lst pt rows cols what fld)
  2. ;;;; Command: AREATT (AREA to table)
  3. ;;;; Posted http://dwg.ru/f/showthread.php?t=14528
  4. ;;;; This command allows you to insert into the specified table cell and the subsequent
  5. ;;;; Text field (FIELD), containing the value of the square of the selected object.
  6. ;;;; Depending on the choice of navigation options by rows or columns.
  7. ;;;; If rows or columns coming to an end, they are automatically added.
  8. ;;;; Formatting cell is taken as specified in the first cell.
  9. ;;;; Precision of rounding and scaling factor are given the option "Setting"
  10. ;;;; Since this field is associated with a particular object, if you change
  11. ;;;; Object field is recalculated (need updating field)
  12. ;;;; Code can be stored in a file areatt.lsp
  13. ;;;; Possible macro to a button or menu item:
  14. ;;;; ^ C ^ C (if (not C: AREATT) (load "AREATT")); AREATT;  
  15. (vl-load-com)
  16. (or *SCALE* (setq *SCALE* 1))
  17. (or *PREC* (setq *PREC* 2))
  18. (or *TEXTSIZE* (setq *TEXTSIZE* (getvar "TEXTSIZE")))
  19. (or *SUFF* (setq *SUFF* ""))(or *PREF* (setq *PREF* ""))
  20. (setq *SUFF* (vl-princ-to-string *SUFF*))
  21. (setq *PREF* (vl-princ-to-string *PREF*))
  22. (princ "\nCurrent scale = ")(princ *SCALE*)
  23. (princ " Current precision = ")(princ *PREC*)
  24. (princ " Text size = ")(princ *TEXTSIZE*)
  25. (princ " Prefix= ")(princ *PREF*)(princ " Suffix= ")(princ *SUFF*)
  26. (setq  tblobj nil tblobj (ssget "_X" '((0 . "ACAD_TABLE"))))
  27. (setq lst (mapcar 'vlax-ename->vla-object(vl-remove-if 'listp (mapcar 'cadr (ssnamex tblobj)))))
  28. (setq  tblobj nil)
  29. (cond
  30.   ((and lst
  31.         (or (initget "Row Col Setting _Row Col Setting") t)
  32.         (or (while (=(setq what (getkword "\nNavigate [on tne Row/on the Columns/Setting] <on the Columns>: "))
  33.                      "Setting")
  34.                     (princ "\nNew scale <")(princ *SCALE*)(princ "> : ")
  35.      (initget 6)
  36.      (if (setq en (getdist))(setq *SCALE* en))
  37.      (princ "\nNew  precision <")(princ *PREC*)(princ "> : ")
  38.      (initget 4)
  39.      (if (setq en (getint))(setq *PREC* en))
  40.      (princ "\nNew text size <")(princ *TEXTSIZE*)(princ "> : ")
  41.      (initget 6)
  42.      (if (setq en (getdist))(setq *TEXTSIZE* en))
  43.      (princ "\nPrefix (space - clear) <")(princ *PREF*)(princ "> : ")
  44.      (if (= (setq en (getstring t)) " ")(setq en ""))
  45.      (if (= (substr (vl-string-left-trim "\/" en) 1 2) "U+")
  46.      (setq en (strcat "\" (vl-string-left-trim "\/" en))))(setq *PREF* en)
  47.      (princ "\nSuffix? (space - clear) <")(princ *SUFF*)(princ "> : ")
  48.      (if (= (setq en (getstring t)) " ")(setq en ""))
  49.      (if (= (substr (vl-string-left-trim "\/" en) 1 2) "U+")
  50.      (setq en (strcat "\" (vl-string-left-trim "\/" en))))(setq *SUFF* en)
  51.               (initget "Row Col Setting _Row Col Setting")
  52.               )
  53.             t
  54.             )
  55.         (or what (setq what "Col"))
  56.         (or
  57.        (while (null  tblobj)
  58.          (initget 1)
  59.          (setq pt (getpoint "\nSpecify a first table cell:"))
  60.          (mapcar '(lambda (x)
  61.           (or tblobj
  62.               (and
  63.                 (= :vlax-true (vla-HitTest x
  64.                               (vlax-3d-point (trans pt 1 0))
  65.                               (vlax-3d-point (trans (getvar "VIEWDIR") 1 0))
  66.                               'row 'col))
  67.                 (setq tblobj x)
  68.                 )
  69.               )
  70.           )
  71.        lst)
  72.          (if (null  tblobj)(princ " ** missing **"))
  73.          )
  74.        t)
  75.         (or
  76.           (vlax-write-enabled-p tblobj)
  77.           (and
  78.             (princ "\nTable on a locked layer!")
  79.             nil
  80.             )
  81.           )
  82.         (setq pt (vla-GetCellAlignment tblobj row col))
  83.         )
  84.    (setq rows (vla-get-rows tblobj))
  85.    (setq cols (vla-get-columns tblobj))
  86.    (while (setq en (car (entsel "\nSelect the entity to insert it square into the table (ENTER - exit): " )))
  87.      (cond
  88.       ((vlax-property-available-p (setq en (vlax-ename->vla-object en)) 'Area)
  89.          (setq fld (strcat "%<\\AcObjProp Object(%<\\_ObjId "
  90.             (vl-princ-to-string(Get-ObjectID-x86-x64 en))
  91.                ">%).Area \\f "%lu2%ps["*PREF* "," *SUFF*
  92.                "]%pr"(itoa *PREC*) "%ct8["(vl-princ-to-string *SCALE*)"]">%"
  93.                ) ;_ strcat
  94.          )
  95.        (cond
  96.          ((= col cols)
  97.            (vla-insertColumns tblobj col (vla-GetColumnWidth tblobj (1- col)) 1)
  98.            (vla-SetCellAlignment tblobj row col pt)
  99.            (setq rows (vla-get-rows tblobj))
  100.            (setq cols (vla-get-columns tblobj))
  101.            
  102.          )
  103.          ((= row rows)
  104.            (vla-insertRows tblobj row (vla-GetRowHeight tblobj (1- row)) 1)
  105.           (vla-SetCellAlignment tblobj row col pt)
  106.            (setq rows (vla-get-rows tblobj))
  107.            (setq cols (vla-get-columns tblobj))
  108.         )
  109.          (t nil))
  110.        (vla-SetText tblobj row col fld)
  111.        (if (= what "Col")(setq col (1+ col))(setq row (1+ row)))
  112.       
  113.       )
  114.       (t(princ "\nThis primitive can not get property Area!"))
  115.      )
  116.      
  117.    )
  118.   )
  119.   (t
  120.     (princ "\nTables not found!")
  121.   )
  122. )
  123. (princ)
  124. )
  125. ;;------------------------------------------------ --------
  126. ;; Function gets a string representation ObjectID
  127. ;; Whether AutoCAD x86 or x64
  128. ;; Source: https: / / discussion.autodesk.com / forums / message.jspa? MessageID = 6172961
  129. ;; Http://forum.dwg.ru/showthread.php?t=51822
  130. (defun Get-ObjectID-x86-x64 (obj / util)
  131. (setq util (vla-get-Utility (vla-get-activedocument (vlax-get-acad-object))))
  132. (if (= (type obj) 'ENAME)(setq obj (vlax-ename->vla-object obj)))
  133. (if (= (type obj) 'VLA-OBJECT)
  134.     (if (> (vl-string-search "x64" (getvar "platform")) 0)
  135.       (vlax-invoke-method util "GetObjectIdString" obj :vlax-False)
  136.       (rtos (vla-get-objectid obj) 2 0)
  137.     )
  138. )
  139. )

我认为有一个链接可能与AutoCAD中的内容相关,当AutoCAD中的内容更改时,Excel中的内容也会更改。
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 09:40:49 | 显示全部楼层
最接近这一点的是数据提取。您想要的听起来像是DWG文件的ODBC驱动程序。是的,那么Excel文件可以通过SQL查询直接链接到DWG中的任何内容。但不幸的是,没有这样的事情-ADesk只提供了从另一个方向提取的数据(即从ACad中导出到Excel)。 
当然,您可以制作一个lisp,只需单击一个按钮即可更新Excel文件。这接近李的代码所做的。但是如果你想根据你的特殊需要定制它,那么你必须自己修改它,或者找一个手头有足够时间的人。如果希望更改在DWG中发生时反映在XLS中,可以通过向lisp添加反应器来实现。尽管我建议不要这样做,因为这会让你的ACad慢得无法衡量!
回复

使用道具 举报

3

主题

12

帖子

9

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 09:47:30 | 显示全部楼层
非常感谢。我将使用数据提取,作为使用的场合,但如果它会改变表面轮廓,将是那些在Excel中手动引入的数据。
我认为这样的事情已经存在,因为我假设很多人或sprogramiralo使用动态普通AutoCAD Civil 3D作为纵断面,但它们在AutoCAD中不会更改,而是作为Excel中的一个区域,因为我假设这样做会更容易将Excel链接到AutoCAD,只有在AutoCAD中的数据更改时才会更改。
回复

使用道具 举报

3

主题

12

帖子

9

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 09:49:02 | 显示全部楼层
 
我不是程序员,
我只使用AutoCAD,但我希望以一种简单的方式处理某些重复和例行的事情,使事情快速、高效地运行,并减少出错的机会
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 06:17 , Processed in 0.546335 second(s), 75 queries .

© 2020-2025 乐筑天下

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