lisp如何读取文件中的数据

lisp如何读取文件中的数据,第1张

先将文本文件用(100

200)这样表示,每一行一个点,先用read-line读取,然后用read读让它返回一个表即(x坐标

y坐标),然后将一个表付值给一个变量,即可调用了

ap加载 输入tjj统计线条个数。

(defun c:tjj(/ ss )

(setq ss  (ssget '((0 "LINE,LWPOLYLINE,CIRCLE,ARC,HELIX,ELLIPSE,SPLINE,POLYLINE"))))

(alert(strcat"共选择了:" (itoa (sslength ss))"条线段!"))

(princ)

)

(princ"\nCAD 命令窗口输入“ap”加载本程序,输入tjj运行程序!")

(defun tes1 ( / &kw &kw1 %k1)

 (setq &kw (entsel "\n请选择要打断的直线"))

 (if (/= &kw nil)

  (progn

   (setq &kw1 (entget (car &kw)))

   (setq %k1 (cdr (assoc 0 &kw1)))

   (if (/= %k1 "LINE")

    (progn

     (alert "\n你选择的不是直线,请重新选择");;如不需要提示就删除这句话下同

     (setq &kw nil)

    )

   )

  )

 )

 &kw

)

(defun tes2 (&kw / L L2 #os #clayer @p1 &kw1 &kw #k1 @p2 @p3 %k1 %k2 %k #ang)

 (command "Lengthen" (car &kw) "")

 (setq L2 (getvar "perimeter"))

 (setq #os (getvar "osmode"))    ;;取得当前捕捉设置

 (setq #clayer (getvar "clayer"));;取得当前图层设置

 (setq @p1 (cadr &kw))           ;;取得直线捕捉点

 (setq &kw1 (car &kw))           ;;取得直线图元名

 (setq &kw (entget &kw1))        ;;取得直线属性列表

 (setq #k1 (cdr (assoc 8 &kw)))  ;;取得直线图层

 (setq @p2 (cdr (assoc 10 &kw))) ;;取得直线起点

 (setq @p3 (cdr (assoc 11 &kw))) ;;取得直线端点

 (setq %k1 (distance @p1 @p2))   ;;起点与捕捉点距离

 (setq %k2 (distance @p1 @p3))   ;;端点与捕捉点距离

 (setq %k (- %k1 %k2))           ;;两个距离相减

 (if (>= %k 0)                   ;;如果靠近端点

  (progn

   (setq #ang (angle @p3 @p2))   ;;取得这个角度

   (setq L (getdist @p3 (strcat "\n请输入要断点长度(不大于直线长度:<" (rtos L2 2 2) ">)")))

   (if (/= L nil) (setq @p1 (polar @p3 #ang L))) ;;得到这个打断点

  )

 )

 (if (< %k 0)                    ;;如果靠近起点

  (progn

   (setq #ang (angle @p2 @p3))   ;;取得这个角度

   (setq L (getdist @p2 (strcat "\n请输入要断点的长度(不大于直线长度:<" (rtos L2 2 2) ">)")))

   (if (/= L nil) (setq @p1 (polar @p2 #ang L))) ;;得到打断点

  )

 )

 (if (= L nil) (alert "\n没有输入长度"))

 (if (and (/= L nil) (>= L L2)) (alert "\n错误,输入的长度大于等于直线的长度") )

 (if (and (/= L nil) (> L2 L))

  (progn

   (setvar "osmode" 0)

   (setvar "clayer" #k1)

   (command "LINE" @p2 @p1 "")

   (command "LINE" @p1 @p3 "")

   (entdel &kw1)

   (setvar "osmode" #os)

   (setvar "clayer" #clayer)

  )

 )

)

(defun C:tt1 ( / &kw)

 (setvar "cmdecho" 0)

 (setvar "blipmode" 0)

 (setq &kw (tes1))

 (if (/= &kw nil) (tes2 &kw) )

 (prin1)

);;复制到记事本以(tt1lsp)命名

(setq &ss1 (mapcar 'cdr (vl-remove-if-not '(lambda (X) (member (car x) '(10 11))) (entget &k1))));获得直线或多段线的端点集合

以上就是关于lisp如何读取文件中的数据全部的内容,包括:lisp如何读取文件中的数据、跪求 CAD里面统计线条的数量的lisp源代码,不是线条的长度、CAD lisp 如何实现直线指定长度位置打断等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9574908.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存