插入符号以反映属性
我发现了一个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)
)
你能详细解释一下,当减少更容易时,如何使用块创建点吗。 你好,比格尔
谢谢你的树代码,我将不得不考虑如何制作一个动态块,并尝试一下这段代码。
是的,我正在使用Manget Office。当我将作业导出到Autocad中时,Magnet Office会创建一个点(作为点),然后创建一个在点顶部具有属性的块,如图所示。我用我创建的LISP例程删除了所有的点,并保留了块的属性,如图所示。我不喜欢磁铁使用的符号,因为大多数时候它们都不起作用或看起来不好。
https://drive.google.com/open?id=1CIkOy5s0iarzUFkgdXQMh2pmTbLjkX6D-点属性
https://drive.google.com/open?id=1Xy9GxcJt_aVFSRD9eRvuZ8Xjm1991tIm-电源极代码
使用IMG括号时,我无法显示图片,因此只能链接图片。 我们现在正在运行Magnet,但符号是在点减少期间设置的,我们通常没有问题。我有一些LISP delete Point_交叉读取一个图层的文本文件,重置颜色和线型,我将实际的3d点保留为Autocad点,这样可以打开或打开,这样我们可以检查实际的Z值,但所有的线功都重置为零。像我们的树这样的东西是根据田地的大小来编码的。我们在调查人员之后进行层重命名,因为通过lisp更容易,因为他们有20多年的代码知识,所以我们只需在每个层的前面加上一些其他前缀。与现有设计相比,Ex_LIP现在不同于LIP。
我们有两个库集,一个是以数字字段代码为前缀的层,另一个是alpha,因此我们去掉了前面的数字,它们也是按自己的方式设置的。
使用屏幕抓取器将图像附加为文件。
特里丁。图纸
您需要返回一个步骤并解决此问题,我确信如果您导入Autocad dwg,您可以使用块作为符号来解决问题。
问这里的人,无论代码是TR还是S3,都会将树自动缩放到3。 Bigal,我刚刚将所有符号导入Magent,我的问题是magnet不支持我在autocad中使用的文本样式,因此符号中的文本错误且太大。我已经修复了使文字适合符号,使其看起来正确的磁铁。然后,我将在autocad中使用的符号重命名为与Magnet导出的符号相同的名称。我在autocad符号中创建了属性,以匹配Magnet中的相同属性名称,因此现在可以在autocad中自动将代码显示在符号旁边一次。我使用Lee Mac网站上的lisp文件重新定义符号,使一切正常。有了树代码,我必须保持目前的方式,这样任何检查计划的人都可以检查细节是否正确,所以我必须找到解决方法。 1文本样式如果它是Autocad SHX文本样式,那么在TTF中找到等效的文本样式。我很确定magnet使用TTF,但您也必须将其加载到PC上。如果你使用的是一种棒形字体,请检查你的windows True type字体,有些字体非常接近。
除非你想得到真正的技术,它的东西,如数字4是封闭或开放的。小数点位于底部或中间。
2你对这些树的编码是什么?
3 Autocad字体是什么? 我的树代码是TR 0.2d4h 4S
我用于符号的autocad字体是survacad。shx公司
我创建了一种字体,使句号显示在中间,而不是在调查计划的所有距离的底部。 上述更改,需要李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
如果您将字体与VIC中的州土地所有权要求相匹配,那么该字体是什么、Isocp、Iso3098B等。您应该能够找到匹配的TTF,问题将在Magnet和Autocad中消失。
页:
[1]