gaics 发表于 2020-4-19 18:58:26

本帖最后由 gaics 于 2020-4-19 20:36 编辑

世界的一滴 发表于 2020-4-19 15:56
大神 这段代码运行后显示 错误: 参数类型错误: numberp: nil请问是哪里的问题啊
(defun c:sbzb (/ ffn f ...

(defun c:sbzb (/ ffn ff ss mh pp n i mj xh tx ty)
(setvar "cmdecho" 0)
(vl-load-com)
(setq ss (ssget '((0 . "*LINE"))))
(setq        ffn (getfiled "\n保存的坐标文件" "坐标" "txt" 1)
        ff(open ffn "w")
)
(write-line "[属性描述]" ff)
(write-line "格式版本号=1.01版本" ff)
(write-line "数据产生单位=" ff)
(write-line "数据产生日期=20" ff)
(write-line "坐标系=国家大地坐标系" ff)
(write-line "几度分带=3" ff)
(write-line "投影类型=高斯克吕格" ff)
(write-line "计量单位=米" ff)
(write-line "带号=41" ff)
(write-line "精度=3" ff)
(write-line "转换参数=0,0,0,0,0,0,1" ff)
(write-line "[地块坐标]" ff)
(setq i 0)
(repeat (sslength ss)
    (command "area" "o" (ssname ss i))
    (setq mj (getvar "area"))
    (setq mj (rtos (* mj 0.0001) 2 4)
          mh (strcat (itoa (1+ i))
                     ","
                     mj
                     ",1,开发区,面,J51G067033J51G067034,仓储用地,063,@"
             )
    )
    (write-line mh ff)
    (setq ssdata (entget (ssname ss i))
          n       0
          xh       0
    )
    (repeat (length ssdata)
      (setq pp        (nth n ssdata)
          key        (car pp)
      )
      (if (= key 10)
        (progn
          (setq        tx (strcat "J"
                           (itoa (1+ xh))
                           ","
                           "1"
                           ","
                           (rtos (caddr pp) 2 3)
                           ","
                           (rtos (cadr pp) 2 3)
                   )
          )
          (write-line tx ff)
          (if (= xh 0)
          (setq ty tx)
          )
          (setq xh (1+ xh))
        )
      )
      (setq n (1+ n))
    )
    (write-line ty ff)
    (setq i (1+ i))
)
(close ff)
(setvar "cmdecho" 1)
(princ (strcat "\n 坐标写至=>" ffn))
(princ (strcat "\n 共提取" (itoa xh) "个坐标点"))
(princ)
)

世界的一滴 发表于 2020-4-19 19:38:12

gaics 发表于 2020-4-19 18:58


大神 我想问两个问题 1是把字符串转数值的语句是什么 例如把 “5” 变成5
                               2是获取多段线顶点个数的语句是什么    可否帮忙解惑:handshake

gaics 发表于 2020-4-19 20:05:57

本帖最后由 gaics 于 2020-4-19 20:46 编辑

(rtos "5" 2 "精度")
顶点数可以通过代码中的“xh”获得。总的顶点数是xh*i

世界的一滴 发表于 2020-4-19 20:09:25

gaics 发表于 2020-4-19 20:05
(rtos "5" 2 "精度")
顶点数可以通过代码中的“i”获得

感谢大神为小白答疑解惑
然吾资历尚浅,仍需时日以顿悟,
今之所言,甚是感激~:loveliness:

gaics 发表于 2020-4-19 20:34:54

本帖最后由 gaics 于 2020-4-19 20:47 编辑

世界的一滴 发表于 2020-4-19 20:09
感谢大神为小白答疑解惑
然吾资历尚浅,仍需时日以顿悟,
今之所言,甚是感激~
刚看了一下,i和xh搞反了,现在更正过来,代码见11楼。
i是选择的多段线数量,xh是顶点数量。
但是(princ (strcat "\n 共提取" (itoa xh) "个坐标点"))返回的只是最后一条多段线的顶点数量,不知你想得到的是每一条多段线的顶点数,还是所有顶点数。

世界的一滴 发表于 2020-4-19 20:49:50

gaics 发表于 2020-4-19 20:34
刚看了一下,i和xh搞反了,现在更正过来,代码见11楼。
i是选择的多段线数量,xh是顶点数量。
但是(pri ...

是一条多段线所有顶点的个数 比如矩形 就是4个顶点

世界的一滴 发表于 2020-4-19 20:49:52

gaics 发表于 2020-4-19 20:34
刚看了一下,i和xh搞反了,现在更正过来,代码见11楼。
i是选择的多段线数量,xh是顶点数量。
但是(pri ...

是一条多段线所有顶点的个数 比如矩形 就是4个顶点

世界的一滴 发表于 2020-4-19 20:50:32

gaics 发表于 2020-4-19 20:34
刚看了一下,i和xh搞反了,现在更正过来,代码见11楼。
i是选择的多段线数量,xh是顶点数量。
但是(pri ...

是一条多段线所有顶点的个数 比如矩形 就是4个顶点

niqiu8 发表于 2020-5-6 22:43:03

你这个是用LISP导出报部里的界址点坐标TXT功能吧,CAD做这个有个问题,不能识别环洞,还有就是不能解决自相交的问题。

屋檐下的路人 发表于 2021-4-25 22:32:36

学习~~~~~~~~~~~~~~~~~~~~~~~~
页: 1 [2]
查看完整版本: autolisp求助!导出坐标怎么实现最后一行重复首行坐标