乐筑天下

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

[编程交流] 插入符号以反映属性

[复制链接]

3

主题

8

帖子

5

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 15:42:53 | 显示全部楼层 |阅读模式
我发现了一个LISP例程,该例程使用点的属性设置(point_代码)插入一个符号,并将其放置到它们应该所在的层中。(getvar“userr4”)用于缩放我们的dwg,例如,比例1:200将使“userr4”为0.2,这是我们缩放线条和符号的方式。
  1. (defun pdetl (et etl)
  2. (setvar "cmdecho" 0)
  3. (if (and (= (cdr (assoc '0 etl)) "INSERT")
  4.    (or (= "CIR" (strcase (substr (cdr (assoc '2 etl)) 1 3)))
  5.        (= "$CIR" (strcase (substr (cdr (assoc '2 etl)) 1 4)))
  6.        (= "GPT" (strcase (cdr (assoc '2 etl))))
  7.        (= "POINT_CROSS" (strcase (cdr (assoc '2 etl))))
  8.        (= "GULLY" (strcase (cdr (assoc '2 etl))))
  9.    )
  10.      )
  11.    (progn
  12.      (setq px 0.0
  13.     py 0.0
  14.     pz 0.0
  15.     pnum ""
  16.     pcode ""
  17.     phgt ""
  18.     phgt2 ""
  19.      )
  20.      (setq px (cadr (assoc '10 etl)))
  21.      (setq py (caddr (assoc '10 etl)))
  22.      (setq pz (cadddr (assoc '10 etl)))
  23.      (setq phgt2 (rtos pz 2 2))
  24.      (setq etl (entget (setq et (entnext et))))
  25.      (while (/= (cdr (assoc '0 etl)) "SEQEND")
  26. (cond ((= "POINT_NUMBER" (strcase (cdr (assoc '2 etl)))) (setq pnum (cdr (assoc '1 etl))))
  27.       ((= "POINT_CODE" (strcase (cdr (assoc '2 etl)))) (setq pcode (cdr (assoc '1 etl))))
  28.       ((= "POINT_HEIGHT" (strcase (cdr (assoc '2 etl)))) (setq phgt (cdr (assoc '1 etl))))
  29.       (t nil)
  30. )
  31. (setq etl (entget (setq et (entnext et))))
  32.      )
  33.      T
  34.    )
  35.    nil
  36. )
  37. )
  38. (defun flr (x y) x)
  39. (defun fll (x y) x)
  40. (defun nodigits        (s)
  41. ;; function
  42. ;; returns a string s without any digits - leaves on alpha chars
  43. (setq        l (strlen s)
  44. p 1
  45. r ""
  46. )
  47. (while (<= p l)
  48.    (setq c (substr s p 1))
  49.    (if        (not (isdigit c))
  50.      (setq r (strcat r c))
  51.    )
  52.    (setq p (1+ p))
  53. )
  54. r
  55. )
  56. (defun isdigit (c)
  57. (if c
  58.    (and (<= (ascii c) 57) (>= (ascii c) 48))
  59.    nil
  60. )
  61. )
  62. (defun c:ptsym ()
  63. ;; insert Symbols for Points
  64. (if (setq ss (ssget))
  65.    (progn (setq u 0)
  66.    (setq numss (sslength ss))
  67.    (while (/= numss u)
  68.      (setq etl (entget (setq et (ssname ss u))))
  69.      (setq u (1+ u))
  70.      (if (= (cdr (assoc '0 etl)) "INSERT")
  71.        (progn (if (pdetl et etl)
  72.                 (progn (princ (flr pnum 6))
  73.                        (princ "   ")
  74.                        (setq pcode (strcase (nodigits pcode)))
  75.                        (princ (flr pcode 10))
  76.                        (princ "...")
  77.                        (setq p1 (trans (LIST PX PY) 0 1))
  78.                        (cond ((or (= pcode "TELE") (= pcode "TPIT"))
  79.                               (progn (command "-layer" "m" "S-COMMS_INFO" "")
  80.                                      (command "insert" "pp" "s" (getvar "userr4") p1 "")
  81.                               )
  82.                              )
  83.                              ((= pcode "EBOX")
  84.                               (progn (command "-layer" "m" "S-ELEC_INFO" "")
  85.                                      (command "insert" "EBOX" "s" (getvar "userr4") p1 "")
  86.                               )
  87.                              )
  88.                              ((= pcode "ELP")
  89.                               (progn (command "-layer" "m" "S-ELEC_INFO" "")
  90.                                      (command "insert" "LIGHT" "s" (getvar "userr4") p1 "")
  91.                               )
  92.                              )
  93.                              ((= pcode "EPIT")
  94.                               (progn (command "-layer" "m" "S-ELEC_INFO" "")
  95.                                      (command "insert" "EPIT" "s" (getvar "userr4") p1 "")
  96.                               )
  97.                              )
  98.                              ((or (= pcode "PP") (= pcode "EP"))
  99.                               (progn (command "-layer" "m" "S-ELEC_INFO" "")
  100.                                      (command "insert" "PP" "s" (getvar "userr4") p1 "")
  101.                               )
  102.                              )
  103.                              ((= pcode "GM")
  104.                               (progn (command "-layer" "m" "S-GAS_INFO" "")
  105.                                      (command "insert" "GM" "s" (getvar "userr4") p1 "")
  106.                               )
  107.                              )
  108.                              ((= pcode "GV")
  109.                               (progn (command "-layer" "m" "S-GAS_INFO" "")
  110.                                      (command "insert" "GV" "s" (getvar "userr4") p1 "")
  111.                               )
  112.                              )
  113.                                  ((= pcode "RWMH")
  114.                               (progn (command "-layer" "m" "S-ROOFWATER_INFO" "")
  115.                                      (command "insert" "RWMH" "s" (getvar "userr4") p1 "")
  116.                               )
  117.                              )
  118.                                  ((= pcode "SIO")
  119.                               (progn (command "-layer" "m" "S-SEWER_INFO" "")
  120.                                      (command "insert" "SIO" "s" (getvar "userr4") p1 "")
  121.                               )
  122.                              )
  123.                                  ((or (= pcode "SMH") (= pcode "SM"))
  124.                               (progn (command "-layer" "m" "S-SEWER_INFO" "")
  125.                                      (command "insert" "SMH" "s" (getvar "userr4") p1 "")
  126.                               )
  127.                              )
  128.                                  ((= pcode "GT")
  129.                               (progn (command "-layer" "m" "S-STORM_INFO" "")
  130.                                      (command "insert" "GT" "s" (getvar "userr4") p1 "")
  131.                               )
  132.                              )
  133.                                  ((= pcode "KO")
  134.                               (progn (command "-layer" "m" "S-STORM_INFO" "")
  135.                                      (command "insert" "BLOB" "s" (getvar "userr4") p1 "")
  136.                               )
  137.                              )
  138.                                  ((= pcode "SWGT")
  139.                               (progn (command "-layer" "m" "S-STORM_INFO" "")
  140.                                      (command "insert" "GRATE" "s" (getvar "userr4") p1 "")
  141.                               )
  142.                              )
  143.                                  ((= pcode "SWIO")
  144.                               (progn (command "-layer" "m" "S-STORM_INFO" "")
  145.                                      (command "insert" "SWIO" "s" (getvar "userr4") p1 "")
  146.                               )
  147.                              )
  148.                                  ((= pcode "SWMH")
  149.                               (progn (command "-layer" "m" "S-STORM_INFO" "")
  150.                                      (command "insert" "SWMH" "s" (getvar "userr4") p1 "")
  151.                               )
  152.                              )
  153.                                  ((= pcode "TSP")
  154.                               (progn (command "-layer" "m" "S-TRAFFIC_INFO" "")
  155.                                      (command "insert" "TRAF" "s" (getvar "userr4") p1 "")
  156.                               )
  157.                              )
  158.                                  ((= pcode "UKN")
  159.                               (progn (command "-layer" "m" "S-UNKNOWN_INFO" "")
  160.                                      (command "insert" "US " "s" (getvar "userr4") p1 "")
  161.                               )
  162.                              )
  163.                                  ((= pcode "UP")
  164.                               (progn (command "-layer" "m" "S-UNKNOWN_INFO" "")
  165.                                      (command "insert" "UP" "s" (getvar "userr4") p1 "")
  166.                               )
  167.                              )
  168.                                  ((= pcode "FH")
  169.                               (progn (command "-layer" "m" "S-WATER_INFO" "")
  170.                                      (command "insert" "FH" "s" (getvar "userr4") p1 "")
  171.                               )
  172.                              )
  173.                                  ((= pcode "TAP")
  174.                               (progn (command "-layer" "m" "S-WATER_INFO" "")
  175.                                      (command "insert" "TAP" "s" (getvar "userr4") p1 "")
  176.                               )
  177.                              )
  178.                                  ((= pcode "WM")
  179.                               (progn (command "-layer" "m" "S-WATER_INFO" "")
  180.                                      (command "insert" "WM" "s" (getvar "userr4") p1 "")
  181.                               )
  182.                              )
  183.                                  ((= pcode "WPIT")
  184.                               (progn (command "-layer" "m" "S-WATER_INFO" "")
  185.                                      (command "insert" "WATER" "s" (getvar "userr4") p1 "")
  186.                               )
  187.                              )
  188.                                  ((= pcode "WV")
  189.                               (progn (command "-layer" "m" "S-WATER_INFO" "")
  190.                                      (command "insert" "WV" "s" (getvar "userr4") p1 "")
  191.                               )
  192.                              )
  193.                                  ((= pcode "HOIST")
  194.                               (progn (command "-layer" "m" "HOIST_INFO" "")
  195.                                      (command "insert" "CHOIST" "s" (getvar "userr4") p1 "")
  196.                               )
  197.                              )
  198.                                  ((= pcode "AIRCON")
  199.                               (progn (command "-layer" "m" "AIRCON_INFO" "")
  200.                                      (command "insert" "AIRCON" "s" (getvar "userr4") p1 "")
  201.                               )
  202.                              )
  203.                                  ((or (= pcode "BOL") (= pcode "BOLLARD"))
  204.                               (progn (command "-layer" "m" "BOLLARD_INFO" "")
  205.                                      (command "insert" "BLOB" "s" (getvar "userr4") p1 "")
  206.                               )
  207.                              )
  208.                                  ((= pcode "FL")
  209.                               (progn (command "-layer" "m" "FLOOR_INFO" "")
  210.                                      (command "insert" "BLOB" "s" (getvar "userr4") p1 "")
  211.                               )
  212.                              )
  213.                                  ((= pcode "*TR")
  214.                               (progn (command "-layer" "m" "TREE_INFO" "")
  215.                                      (command "insert" "TREE" "s" (getvar "userr4") p1 "")
  216.                               )
  217.                              )
  218.                        )
  219.                 )
  220.               )
  221.        )
  222.      )
  223.    )
  224.    )
  225. )
  226. (princ)
  227. )

 
你能详细解释一下,当减少更容易时,如何使用块创建点吗。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 15:50:01 | 显示全部楼层
你好,比格尔
 
谢谢你的树代码,我将不得不考虑如何制作一个动态块,并尝试一下这段代码。
 
是的,我正在使用Manget Office。当我将作业导出到Autocad中时,Magnet Office会创建一个点(作为点),然后创建一个在点顶部具有属性的块,如图所示。我用我创建的LISP例程删除了所有的点,并保留了块的属性,如图所示。我不喜欢磁铁使用的符号,因为大多数时候它们都不起作用或看起来不好。
 
https://drive.google.com/open?id=1CIkOy5s0iarzUFkgdXQMh2pmTbLjkX6D-点属性
https://drive.google.com/open?id=1Xy9GxcJt_aVFSRD9eRvuZ8Xjm1991tIm-电源极代码
 
使用IMG括号时,我无法显示图片,因此只能链接图片。
回复

使用道具 举报

3

主题

8

帖子

5

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 16:02:06 | 显示全部楼层
我们现在正在运行Magnet,但符号是在点减少期间设置的,我们通常没有问题。我有一些LISP delete Point_交叉读取一个图层的文本文件,重置颜色和线型,我将实际的3d点保留为Autocad点,这样可以打开或打开,这样我们可以检查实际的Z值,但所有的线功都重置为零。像我们的树这样的东西是根据田地的大小来编码的。我们在调查人员之后进行层重命名,因为通过lisp更容易,因为他们有20多年的代码知识,所以我们只需在每个层的前面加上一些其他前缀。与现有设计相比,Ex_LIP现在不同于LIP。
 
我们有两个库集,一个是以数字字段代码为前缀的层,另一个是alpha,因此我们去掉了前面的数字,它们也是按自己的方式设置的。
 
使用屏幕抓取器将图像附加为文件。
特里丁。图纸
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:03:47 | 显示全部楼层
 
您需要返回一个步骤并解决此问题,我确信如果您导入Autocad dwg,您可以使用块作为符号来解决问题。
 
问这里的人,无论代码是TR还是S3,都会将树自动缩放到3。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:11:00 | 显示全部楼层
Bigal,我刚刚将所有符号导入Magent,我的问题是magnet不支持我在autocad中使用的文本样式,因此符号中的文本错误且太大。我已经修复了使文字适合符号,使其看起来正确的磁铁。然后,我将在autocad中使用的符号重命名为与Magnet导出的符号相同的名称。我在autocad符号中创建了属性,以匹配Magnet中的相同属性名称,因此现在可以在autocad中自动将代码显示在符号旁边一次。我使用Lee Mac网站上的lisp文件重新定义符号,使一切正常。有了树代码,我必须保持目前的方式,这样任何检查计划的人都可以检查细节是否正确,所以我必须找到解决方法。
回复

使用道具 举报

3

主题

8

帖子

5

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 16:18:35 | 显示全部楼层
1文本样式如果它是Autocad SHX文本样式,那么在TTF中找到等效的文本样式。我很确定magnet使用TTF,但您也必须将其加载到PC上。如果你使用的是一种棒形字体,请检查你的windows True type字体,有些字体非常接近。
 
除非你想得到真正的技术,它的东西,如数字4是封闭或开放的。小数点位于底部或中间。
 
2你对这些树的编码是什么?
 
3 Autocad字体是什么?
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:26:48 | 显示全部楼层
我的树代码是TR 0.2d4h 4S
 
我用于符号的autocad字体是survacad。shx公司
 
我创建了一种字体,使句号显示在中间,而不是在调查计划的所有距离的底部。
回复

使用道具 举报

3

主题

8

帖子

5

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 16:33:52 | 显示全部楼层
上述更改,需要李macs解析。lsp也会把数字拉出来,留下D和S,如果你想的话,可以有一个3d树。
 
仍然认为真正的类型是要走的路,你可以张贴一个图像的苏瓦卡德。shx不确定其是否以任何方式受版权保护。
 
我会尽量找时间给你发一些代码
 
 
  1. ; Dynamically insert a tree based on civ3D point description
  2. ; By Alan H Sep 2016
  3. ; version 2 read a csv file for non Civ3D users
  4. ;; Set Dynamic Block Property Value  -  Lee Mac
  5. ;; Modifies the value of a Dynamic Block property (if present)
  6. ;; blk - [vla] VLA Dynamic Block Reference object
  7. ;; prp - [str] Dynamic Block property name (case-insensitive)
  8. ;; val - [any] New value for property
  9. ;; Returns: [any] New value if successful, else nil
  10. (defun LM:setdynpropvalue ( blk prp val )
  11.    (setq prp (strcase prp))
  12.    (vl-some
  13.       '(lambda ( x )
  14.            (if (= prp (strcase (vla-get-propertyname x)))
  15.                (progn
  16.                    (vla-put-value x (vlax-make-variant val (vlax-variant-type (vla-get-value x))))
  17.                    (cond (val) (t))
  18.                )
  19.            )
  20.        )
  21.        (vlax-invoke blk 'getdynamicblockproperties)
  22.    )
  23. )
  24. ;; CSV -> List  -  Lee Mac
  25. ;; Parses a line from a CSV file into a list of cell values.
  26. ;; str - [str] string read from CSV file
  27. ;; sep - [str] CSV separator token
  28. ;; pos - [int] initial position index (always zero)
  29. (defun LM:csv->lst ( str sep pos / s )
  30.    (cond
  31.        (   (not (setq pos (vl-string-search sep str pos)))
  32.            (if (wcmatch str ""*"")
  33.                (list (LM:csv-replacequotes (substr str 2 (- (strlen str) 2))))
  34.                (list str)
  35.            )
  36.        )
  37.        (   (or (wcmatch (setq s (substr str 1 pos)) ""*[~"]")
  38.                (and (wcmatch s "~*[~"]*") (= 1 (logand 1 pos)))
  39.            )
  40.            (LM:csv->lst str sep (+ pos 2))
  41.        )
  42.        (   (wcmatch s ""*"")
  43.            (cons
  44.                (LM:csv-replacequotes (substr str 2 (- pos 2)))
  45.                (LM:csv->lst (substr str (+ pos 2)) sep 0)
  46.            )
  47.        )
  48.        (   (cons s (LM:csv->lst (substr str (+ pos 2)) sep 0)))
  49.    )
  50. )
  51. (defun dynamic_trees ( / obj obj2 raw inspt )
  52. ;(if (not LM:csv->lst)(load "ReadCSV-V1-3"))
  53. ;(if (not LM:setdynpropvalue)(load "set-dynamic-block-value"))
  54. (setq layold (getvar "clayer"))
  55. (if (not (tblsearch "LAYER" "EX_TREE"))
  56.     (Command "-layer" "m" "EX_TREE" "c" 90 "EX_TREE" "LT" "Continuous" "EX_TREE" "")
  57.     (setvar "clayer" "EX_TREE")
  58. )
  59. (setq ss (ssget "x" '((0 . "AECC_COGO_POINT"))))
  60. (repeat (setq x (sslength ss))
  61. (setq obj (vlax-ename->vla-object (ssname ss (setq x (- x 1)))))
  62. (setq raw (vla-get-description obj))
  63. (setq inspt (vlax-safearray->list (vlax-variant-value (vlax-get-property obj 'location))))
  64. ;RawDescription = "TR 5 1.5" replace tr as required add extra tree types also
  65. ; use space delimeted description - tree trunk spread
  66. (if (wcmatch raw "TR*")
  67. (progn
  68. (setq rawlist (LM:csv->lst raw " " 0))
  69. (setq basedesc (nth 0 rawlist))
  70. (setq spread (atof (nth 2 rawlist)))
  71. (setq trunk (atof (nth 1 rawlist))) ; convert string
  72. (if (= "TR" basedesc)
  73. (progn
  74. (command "-Insert" "TREEDYN" inspt 1 1 0)
  75. (setq obj2 (vlax-ename->vla-object (entlast)))
  76. (LM:setdynpropvalue obj2 "Trunk" trunk)
  77. (LM:setdynpropvalue obj2 "Spread" spread)
  78. ) ;progn
  79. ) ; if
  80. ) ;progn
  81. ) ; if
  82. ) ; repeat
  83. (setvar "clayer" layold)
  84. (princ) ; exit quitely
  85. ) ;defun
  86. (dynamic_trees)

 
需要使用类似的工具来移除D、H和S
 
  1. (setq basedesc (nth 0 rawlist))
  2. (setq spread (atof (nth 3 rawlist)))
  3. (setq trunk (atof (nth 1 rawlist))) ; convert string
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:37:40 | 显示全部楼层
如果您将字体与VIC中的州土地所有权要求相匹配,那么该字体是什么、Isocp、Iso3098B等。您应该能够找到匹配的TTF,问题将在Magnet和Autocad中消失。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:46:56 | 显示全部楼层
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 13:06 , Processed in 1.717019 second(s), 72 queries .

© 2020-2025 乐筑天下

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