明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: 世界的一滴

[提问] autolisp求助!导出坐标怎么实现最后一行重复首行坐标

[复制链接]
发表于 2020-4-19 18:58:26 | 显示全部楼层
本帖最后由 gaics 于 2020-4-19 20:36 编辑
世界的一滴 发表于 2020-4-19 15:56
大神 这段代码运行后显示 错误: 参数类型错误: numberp: nil  请问是哪里的问题啊
(defun c:sbzb (/ ffn f ...

  1. (defun c:sbzb (/ ffn ff ss mh pp n i mj xh tx ty)
  2.   (setvar "cmdecho" 0)
  3.   (vl-load-com)
  4.   (setq ss (ssget '((0 . "*LINE"))))
  5.   (setq        ffn (getfiled "\n保存的坐标文件" "坐标" "txt" 1)
  6.         ff  (open ffn "w")
  7.   )
  8.   (write-line "[属性描述]" ff)
  9.   (write-line "格式版本号=1.01版本" ff)
  10.   (write-line "数据产生单位=" ff)
  11.   (write-line "数据产生日期=20" ff)
  12.   (write-line "坐标系=国家大地坐标系" ff)
  13.   (write-line "几度分带=3" ff)
  14.   (write-line "投影类型=高斯克吕格" ff)
  15.   (write-line "计量单位=米" ff)
  16.   (write-line "带号=41" ff)
  17.   (write-line "精度=3" ff)
  18.   (write-line "转换参数=0,0,0,0,0,0,1" ff)
  19.   (write-line "[地块坐标]" ff)
  20.   (setq i 0)
  21.   (repeat (sslength ss)
  22.     (command "area" "o" (ssname ss i))
  23.     (setq mj (getvar "area"))
  24.     (setq mj (rtos (* mj 0.0001) 2 4)
  25.           mh (strcat (itoa (1+ i))
  26.                      ","
  27.                      mj
  28.                      ",1,开发区,面,J51G067033J51G067034,仓储用地,063,@"
  29.              )
  30.     )
  31.     (write-line mh ff)
  32.     (setq ssdata (entget (ssname ss i))
  33.           n         0
  34.           xh         0
  35.     )
  36.     (repeat (length ssdata)
  37.       (setq pp        (nth n ssdata)
  38.             key        (car pp)
  39.       )
  40.       (if (= key 10)
  41.         (progn
  42.           (setq        tx (strcat "J"
  43.                            (itoa (1+ xh))
  44.                            ","
  45.                            "1"
  46.                            ","
  47.                            (rtos (caddr pp) 2 3)
  48.                            ","
  49.                            (rtos (cadr pp) 2 3)
  50.                    )
  51.           )
  52.           (write-line tx ff)
  53.           (if (= xh 0)
  54.             (setq ty tx)
  55.           )
  56.           (setq xh (1+ xh))
  57.         )
  58.       )
  59.       (setq n (1+ n))
  60.     )
  61.     (write-line ty ff)
  62.     (setq i (1+ i))
  63.   )
  64.   (close ff)
  65.   (setvar "cmdecho" 1)
  66.   (princ (strcat "\n 坐标写至=>" ffn))
  67.   (princ (strcat "\n 共提取" (itoa xh) "个坐标点"))
  68.   (princ)
  69. )


 楼主| 发表于 2020-4-19 19:38:12 | 显示全部楼层

大神 我想问两个问题 1是  把字符串转数值的语句是什么 例如  把 “5” 变成5
                               2是  获取多段线顶点个数的语句是什么    可否帮忙解惑
发表于 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”获得

感谢大神为小白答疑解惑
然吾资历尚浅,仍需时日以顿悟,
今之所言,甚是感激~
发表于 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个顶点
发表于 2020-5-6 22:43:03 | 显示全部楼层
你这个是用LISP导出报部里的界址点坐标TXT功能吧,CAD做这个有个问题,不能识别环洞,还有就是不能解决自相交的问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-16 22:26 , Processed in 0.163899 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表