goldy2000 发表于 2022-7-5 17:44:13

Lisp导入坐标和代码

大家好!!
 
我需要一个LISp从txt或xls/csv文件中导入X、Y、Z和代码或其他一些属性,并将其分别放入新层,如下所示:
 
含coodrinates(X;Y;Z)的点应为layer TOCKA(*克罗地亚语*)
高度(Z坐标)应为层VISINA
点数应为图层BROJ TOCKE
代码应为图层KOD
如果存在其他属性,则可能成为层OSTALO
 
我看到很多Lisp都能完成这一部分,但没有找到任何可以将其放在不同层中的Lisp,所以如果有人知道怎么做的话。。。这对大地测量学和世界上许多大地测量学都有好处,因为这也是我的工作。。。。THX提前。。

wannabe 发表于 2022-7-5 17:49:12

我有一个可以读取坐标并用你选择的块填充图形。它还将按块属性在excel/text文件中的显示顺序填充块属性。
 
例子:
 
X坐标y坐标属性1属性2
 
你想让我把它寄出去还是与你的设计不兼容?

goldy2000 发表于 2022-7-5 17:52:30

我有一个类似的东西,它把每一个坐标都放在它的轴上,你可以发送它,这样我就可以试试了,thx人!!

Lee Mac 发表于 2022-7-5 17:56:24

这是可以做到的-
不过有几件事要问:
点编号、Z坐标和代码都是属性吗?还是有些只是文字?
此外,如果它们都是属性,它们是否包含在您拥有的块中?

goldy2000 发表于 2022-7-5 17:59:43

新图层:点-->TOCKA(这些是克罗地亚文字)
Z高度-->VISINA
代码-->KOD
点编号-->BROJ TOCKE
 
是的,这三个是唯一的属性。
 
例子:
点编号Y X Z代码
 
1 100.00 20.11 2.45道路
 
点(TOCKA)是Y、X、Z坐标,在dwg文件中是唯一的点。
代码(KOD)是文本,但它位于点位置
点编号(BROJ TOCKE)类似于代码
高度Z是显示数字的文本,在本例中为2.45,位于点位置附近
 
它们不是块,它们只是文本和点(在本例中为点)。。。有点清楚??我的英语不是很好,所以我无法解释最好的

goldy2000 发表于 2022-7-5 18:02:16

我可以给你发送一些示例dwg文件吗??

Lee Mac 发表于 2022-7-5 18:03:22

 
啊,好吧-我明白,

goran 发表于 2022-7-5 18:08:29

我有一些有趣的东西给你(txt,csv,xls-trebam-tvoj-mail)。
不是lsp,而是dvb。

goldy2000 发表于 2022-7-5 18:10:25

dmikicic1981@yahoo.com
 
dvb??类似lisp命令的东西??我读了一些关于dvb的文章。。但是没关系,我会解决的,克罗地亚的戈兰??

Lee Mac 发表于 2022-7-5 18:14:11

试试这个Goldy
 

(defun c:goldy (/ doc spc file nl lst pt)
(vl-load-com)

(setq doc (vla-get-ActiveDocument
             (vlax-get-Acad-Object))
       spc (if (zerop (vla-get-activespace doc))
             (if (= (vla-get-mspace doc) :vlax-true) ; Vport
               (vla-get-modelspace doc)
               (vla-get-paperspace doc))
             (vla-get-modelspace doc)))

(or (tblsearch "LAYER" "TOCKA")
   (vla-add (vla-get-layers doc) "TOCKA"))
(if (setq file (getfiled "Select Text File"
                     (if *load$file* *load$file* "") "txt" )
   (progn
   ;(vlp file)
   (setq *load$file* file file (open file "r"))
   (while (setq nl (read-line file))
       (setq lst (cons (StrBrk nl 32) lst)))
   (close file)
   (foreach line lst
       (setq pt
         (mapcar 'distof
         (list (caddr line) (cadr line) (cadddr line))))
       (vla-put-layer
         (vla-AddPoint spc (vlax-3D-point pt)) "TOCKA")
       (Make_Text pt (last line) 0.0 "KOD" 1 2)
       (Make_Text pt (car line) 0.0 "BROJ TOCKE" 1 0)
       (Make_Text pt (cadddr line) 0.0 "VISINA" 1 3)))
   (princ "\n<!> No File Selected <!>"))
(princ))


(defun StrBrk (str chrc / pos lst)
(while (setq pos (vl-string-position chrc str))
   (setq lst (cons (substr str 1 pos) lst)
         str (substr str (+ pos 2))))
(reverse (cons str lst)))

(defun Make_Text(pt val rot lay |72 |73)
(entmake
   (list
   (cons 0 "TEXT")
   (cons 8lay)
   (cons 10 pt)
   (cons 40 (getvar "TEXTSIZE"))
   (cons 1val)
   (cons 50 rot)
   (cons 7(getvar "TEXTSTYLE"))
   (cons 71 0)
   (cons 72 |72)
   (cons 73 |73)
   (cons 11 pt))))


页: [1] 2
查看完整版本: Lisp导入坐标和代码