ninjaroo5075 发表于 2022-7-5 15:42:53

插入符号以反映属性

我发现了一个LISP例程,该例程使用点的属性设置(point_代码)插入一个符号,并将其放置到它们应该所在的层中。(getvar“userr4”)用于缩放我们的dwg,例如,比例1:200将使“userr4”为0.2,这是我们缩放线条和符号的方式。
(defun pdetl (et etl)
(setvar "cmdecho" 0)
(if (and (= (cdr (assoc '0 etl)) "INSERT")
   (or (= "CIR" (strcase (substr (cdr (assoc '2 etl)) 1 3)))
       (= "$CIR" (strcase (substr (cdr (assoc '2 etl)) 1 4)))
       (= "GPT" (strcase (cdr (assoc '2 etl))))
       (= "POINT_CROSS" (strcase (cdr (assoc '2 etl))))
       (= "GULLY" (strcase (cdr (assoc '2 etl))))
   )
   )
   (progn
   (setq px 0.0
    py 0.0
    pz 0.0
    pnum ""
    pcode ""
    phgt ""
    phgt2 ""
   )
   (setq px (cadr (assoc '10 etl)))
   (setq py (caddr (assoc '10 etl)))
   (setq pz (cadddr (assoc '10 etl)))
   (setq phgt2 (rtos pz 2 2))
   (setq etl (entget (setq et (entnext et))))
   (while (/= (cdr (assoc '0 etl)) "SEQEND")
(cond ((= "POINT_NUMBER" (strcase (cdr (assoc '2 etl)))) (setq pnum (cdr (assoc '1 etl))))
      ((= "POINT_CODE" (strcase (cdr (assoc '2 etl)))) (setq pcode (cdr (assoc '1 etl))))
      ((= "POINT_HEIGHT" (strcase (cdr (assoc '2 etl)))) (setq phgt (cdr (assoc '1 etl))))
      (t nil)
)
(setq etl (entget (setq et (entnext et))))
   )
   T
   )
   nil
)
)
(defun flr (x y) x)
(defun fll (x y) x)
(defun nodigits        (s)
;; function
;; returns a string s without any digits - leaves on alpha chars
(setq        l (strlen s)
p 1
r ""
)
(while (<= p l)
   (setq c (substr s p 1))
   (if        (not (isdigit c))
   (setq r (strcat r c))
   )
   (setq p (1+ p))
)
r
)
(defun isdigit (c)
(if c
   (and (<= (ascii c) 57) (>= (ascii c) 48))
   nil
)
)
(defun c:ptsym ()
;; insert Symbols for Points
(if (setq ss (ssget))
   (progn (setq u 0)
   (setq numss (sslength ss))
   (while (/= numss u)
   (setq etl (entget (setq et (ssname ss u))))
   (setq u (1+ u))
   (if (= (cdr (assoc '0 etl)) "INSERT")
       (progn (if (pdetl et etl)
                (progn (princ (flr pnum 6))
                     (princ "   ")
                     (setq pcode (strcase (nodigits pcode)))
                     (princ (flr pcode 10))
                     (princ "...")
                     (setq p1 (trans (LIST PX PY) 0 1))
                     (cond ((or (= pcode "TELE") (= pcode "TPIT"))
                              (progn (command "-layer" "m" "S-COMMS_INFO" "")
                                     (command "insert" "pp" "s" (getvar "userr4") p1 "")
                              )
                             )
                             ((= pcode "EBOX")
                              (progn (command "-layer" "m" "S-ELEC_INFO" "")
                                     (command "insert" "EBOX" "s" (getvar "userr4") p1 "")
                              )
                             )
                             ((= pcode "ELP")
                              (progn (command "-layer" "m" "S-ELEC_INFO" "")
                                     (command "insert" "LIGHT" "s" (getvar "userr4") p1 "")
                              )
                             )
                             ((= pcode "EPIT")
                              (progn (command "-layer" "m" "S-ELEC_INFO" "")
                                     (command "insert" "EPIT" "s" (getvar "userr4") p1 "")
                              )
                             )
                             ((or (= pcode "PP") (= pcode "EP"))
                              (progn (command "-layer" "m" "S-ELEC_INFO" "")
                                     (command "insert" "PP" "s" (getvar "userr4") p1 "")
                              )
                             )
                             ((= pcode "GM")
                              (progn (command "-layer" "m" "S-GAS_INFO" "")
                                     (command "insert" "GM" "s" (getvar "userr4") p1 "")
                              )
                             )
                             ((= pcode "GV")
                              (progn (command "-layer" "m" "S-GAS_INFO" "")
                                     (command "insert" "GV" "s" (getvar "userr4") p1 "")
                              )
                             )
                               ((= pcode "RWMH")
                              (progn (command "-layer" "m" "S-ROOFWATER_INFO" "")
                                     (command "insert" "RWMH" "s" (getvar "userr4") p1 "")
                              )
                             )
                               ((= pcode "SIO")
                              (progn (command "-layer" "m" "S-SEWER_INFO" "")
                                     (command "insert" "SIO" "s" (getvar "userr4") p1 "")
                              )
                             )
                               ((or (= pcode "SMH") (= pcode "SM"))
                              (progn (command "-layer" "m" "S-SEWER_INFO" "")
                                     (command "insert" "SMH" "s" (getvar "userr4") p1 "")
                              )
                             )
                               ((= pcode "GT")
                              (progn (command "-layer" "m" "S-STORM_INFO" "")
                                     (command "insert" "GT" "s" (getvar "userr4") p1 "")
                              )
                             )
                               ((= pcode "KO")
                              (progn (command "-layer" "m" "S-STORM_INFO" "")
                                     (command "insert" "BLOB" "s" (getvar "userr4") p1 "")
                              )
                             )
                               ((= pcode "SWGT")
                              (progn (command "-layer" "m" "S-STORM_INFO" "")
                                     (command "insert" "GRATE" "s" (getvar "userr4") p1 "")
                              )
                             )
                               ((= pcode "SWIO")
                              (progn (command "-layer" "m" "S-STORM_INFO" "")
                                     (command "insert" "SWIO" "s" (getvar "userr4") p1 "")
                              )
                             )
                               ((= pcode "SWMH")
                              (progn (command "-layer" "m" "S-STORM_INFO" "")
                                     (command "insert" "SWMH" "s" (getvar "userr4") p1 "")
                              )
                             )
                               ((= pcode "TSP")
                              (progn (command "-layer" "m" "S-TRAFFIC_INFO" "")
                                     (command "insert" "TRAF" "s" (getvar "userr4") p1 "")
                              )
                             )
                               ((= pcode "UKN")
                              (progn (command "-layer" "m" "S-UNKNOWN_INFO" "")
                                     (command "insert" "US " "s" (getvar "userr4") p1 "")
                              )
                             )
                               ((= pcode "UP")
                              (progn (command "-layer" "m" "S-UNKNOWN_INFO" "")
                                     (command "insert" "UP" "s" (getvar "userr4") p1 "")
                              )
                             )
                               ((= pcode "FH")
                              (progn (command "-layer" "m" "S-WATER_INFO" "")
                                     (command "insert" "FH" "s" (getvar "userr4") p1 "")
                              )
                             )
                               ((= pcode "TAP")
                              (progn (command "-layer" "m" "S-WATER_INFO" "")
                                     (command "insert" "TAP" "s" (getvar "userr4") p1 "")
                              )
                             )
                               ((= pcode "WM")
                              (progn (command "-layer" "m" "S-WATER_INFO" "")
                                     (command "insert" "WM" "s" (getvar "userr4") p1 "")
                              )
                             )
                               ((= pcode "WPIT")
                              (progn (command "-layer" "m" "S-WATER_INFO" "")
                                     (command "insert" "WATER" "s" (getvar "userr4") p1 "")
                              )
                             )
                               ((= pcode "WV")
                              (progn (command "-layer" "m" "S-WATER_INFO" "")
                                     (command "insert" "WV" "s" (getvar "userr4") p1 "")
                              )
                             )
                               ((= pcode "HOIST")
                              (progn (command "-layer" "m" "HOIST_INFO" "")
                                     (command "insert" "CHOIST" "s" (getvar "userr4") p1 "")
                              )
                             )
                               ((= pcode "AIRCON")
                              (progn (command "-layer" "m" "AIRCON_INFO" "")
                                     (command "insert" "AIRCON" "s" (getvar "userr4") p1 "")
                              )
                             )
                               ((or (= pcode "BOL") (= pcode "BOLLARD"))
                              (progn (command "-layer" "m" "BOLLARD_INFO" "")
                                     (command "insert" "BLOB" "s" (getvar "userr4") p1 "")
                              )
                             )
                               ((= pcode "FL")
                              (progn (command "-layer" "m" "FLOOR_INFO" "")
                                     (command "insert" "BLOB" "s" (getvar "userr4") p1 "")
                              )
                             )
                               ((= pcode "*TR")
                              (progn (command "-layer" "m" "TREE_INFO" "")
                                     (command "insert" "TREE" "s" (getvar "userr4") p1 "")
                              )
                             )
                     )
                )
              )
       )
   )
   )
   )
)
(princ)
)
 
你能详细解释一下,当减少更容易时,如何使用块创建点吗。

BIGAL 发表于 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括号时,我无法显示图片,因此只能链接图片。

ninjaroo5075 发表于 2022-7-5 16:02:06

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

BIGAL 发表于 2022-7-5 16:03:47

 
您需要返回一个步骤并解决此问题,我确信如果您导入Autocad dwg,您可以使用块作为符号来解决问题。
 
问这里的人,无论代码是TR还是S3,都会将树自动缩放到3。

BIGAL 发表于 2022-7-5 16:11:00

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

ninjaroo5075 发表于 2022-7-5 16:18:35

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

BIGAL 发表于 2022-7-5 16:26:48

我的树代码是TR 0.2d4h 4S
 
我用于符号的autocad字体是survacad。shx公司
 
我创建了一种字体,使句号显示在中间,而不是在调查计划的所有距离的底部。

ninjaroo5075 发表于 2022-7-5 16:33:52

上述更改,需要李macs解析。lsp也会把数字拉出来,留下D和S,如果你想的话,可以有一个3d树。
 
仍然认为真正的类型是要走的路,你可以张贴一个图像的苏瓦卡德。shx不确定其是否以任何方式受版权保护。
 
我会尽量找时间给你发一些代码
 
 

; Dynamically insert a tree based on civ3D point description
; By Alan H Sep 2016
; version 2 read a csv file for non Civ3D users

;; Set Dynamic Block Property Value-Lee Mac
;; Modifies the value of a Dynamic Block property (if present)
;; blk - VLA Dynamic Block Reference object
;; prp - Dynamic Block property name (case-insensitive)
;; val - New value for property
;; Returns: New value if successful, else nil

(defun LM:setdynpropvalue ( blk prp val )
   (setq prp (strcase prp))
   (vl-some
      '(lambda ( x )
         (if (= prp (strcase (vla-get-propertyname x)))
               (progn
                   (vla-put-value x (vlax-make-variant val (vlax-variant-type (vla-get-value x))))
                   (cond (val) (t))
               )
         )
       )
       (vlax-invoke blk 'getdynamicblockproperties)
   )
)

;; CSV -> List-Lee Mac
;; Parses a line from a CSV file into a list of cell values.
;; str - string read from CSV file
;; sep - CSV separator token
;; pos - initial position index (always zero)

(defun LM:csv->lst ( str sep pos / s )
   (cond
       (   (not (setq pos (vl-string-search sep str pos)))
         (if (wcmatch str "\"*\"")
               (list (LM:csv-replacequotes (substr str 2 (- (strlen str) 2))))
               (list str)
         )
       )
       (   (or (wcmatch (setq s (substr str 1 pos)) "\"*[~\"]")
               (and (wcmatch s "~*[~\"]*") (= 1 (logand 1 pos)))
         )
         (LM:csv->lst str sep (+ pos 2))
       )
       (   (wcmatch s "\"*\"")
         (cons
               (LM:csv-replacequotes (substr str 2 (- pos 2)))
               (LM:csv->lst (substr str (+ pos 2)) sep 0)
         )
       )
       (   (cons s (LM:csv->lst (substr str (+ pos 2)) sep 0)))
   )
)

(defun dynamic_trees ( / obj obj2 raw inspt )

;(if (not LM:csv->lst)(load "ReadCSV-V1-3"))
;(if (not LM:setdynpropvalue)(load "set-dynamic-block-value"))

(setq layold (getvar "clayer"))

(if (not (tblsearch "LAYER" "EX_TREE"))
    (Command "-layer" "m" "EX_TREE" "c" 90 "EX_TREE" "LT" "Continuous" "EX_TREE" "")
    (setvar "clayer" "EX_TREE")
)

(setq ss (ssget "x" '((0 . "AECC_COGO_POINT"))))
(repeat (setq x (sslength ss))
(setq obj (vlax-ename->vla-object (ssname ss (setq x (- x 1)))))
(setq raw (vla-get-description obj))
(setq inspt (vlax-safearray->list (vlax-variant-value (vlax-get-property obj 'location))))

;RawDescription = "TR 5 1.5" replace tr as required add extra tree types also
; use space delimeted description - tree trunk spread
(if (wcmatch raw "TR*")
(progn
(setq rawlist (LM:csv->lst raw " " 0))

(setq basedesc (nth 0 rawlist))
(setq spread (atof (nth 2 rawlist)))
(setq trunk (atof (nth 1 rawlist))) ; convert string

(if (= "TR" basedesc)
(progn
(command "-Insert" "TREEDYN" inspt 1 1 0)
(setq obj2 (vlax-ename->vla-object (entlast)))
(LM:setdynpropvalue obj2 "Trunk" trunk)
(LM:setdynpropvalue obj2 "Spread" spread)
) ;progn
) ; if
) ;progn
) ; if
) ; repeat

(setvar "clayer" layold)
(princ) ; exit quitely
) ;defun
(dynamic_trees)

 
需要使用类似的工具来移除D、H和S
 

(setq basedesc (nth 0 rawlist))
(setq spread (atof (nth 3 rawlist)))
(setq trunk (atof (nth 1 rawlist))) ; convert string

BIGAL 发表于 2022-7-5 16:37:40

如果您将字体与VIC中的州土地所有权要求相匹配,那么该字体是什么、Isocp、Iso3098B等。您应该能够找到匹配的TTF,问题将在Magnet和Autocad中消失。

BIGAL 发表于 2022-7-5 16:46:56

页: [1]
查看完整版本: 插入符号以反映属性