明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2000|回复: 8

[求助]enmake建立多段线的问题

[复制链接]
发表于 2006-12-16 21:24:00 | 显示全部楼层 |阅读模式

用lisp写了一个小程序,从文本文件读入坐标,在cad里画多段线,文本格式为:

1 495227 4143786
1 495226 4143788
1 495225 4143790

程序源码如下:

(defun c:tkl (/ filename pointgroup corlist data POINTNUMBER)
  (setq filename (open (getfiled "选择数据文件" " " "" 0) "r"))
  (setq pointgroup
      nil
 OINTNUMBER 0
  )
  (while (sETQ DATA (read-line filename))
    (setq corlist (list (list 10
         (CAdR (READ (STRCAT "(" DATA ")")))
         (CAddR (READ (STRCAT "(" DATA ")")))
   )
   (cons 40 0)
   (cons 41 0)
   (cons 42 0)
    )
    )
    (setq pointgroup (append corlist pointgroup))
    (SETQ POINTNUMBER
    (1+ POINTNUMBER)
    )
  )
     ;(setq pointgroup (reverse pointgroup))
  (print pointgroup)
  (close filename)
  (entmake
    (list (append
     (list      
       (cons 0 "LWPOLYLINE")      
       (CONS 5 "150")
       (cons 100 "AcDbEntity")
       (CONS 67 0)
       (cons 410 "model")
       (cons 8 "tracklines")
       (cons 100 "AcDbPolyline")
       (cons 90 POINTNUMBER)             
       (cons 70 0)
       (cons 43 0)
       (cons 38 0)
       (cons 39 0)

     )
     pointgroup
    (LIST (list 210 0.0 0.0 1))
   )
    )
  )
  (gc)
)

运行后提示:

错误: DXF
组不正确: ((0 . "LWPOLYLINE") (5 . "150") (100 . "AcDbEntity") (67 . 0) (410 .
"model") (8 . "tracklines") (100 . "AcDbPolyline") (90 . 3) (70 . 0) (43 . 0)
(38 . 0) (39 . 0) (10 495225 4143790) (40 . 0) (41 . 0) (42 . 0) (10 495226
4143788) (40 . 0) (41 . 0) (42 . 0) (10 495227 4143786) (40 . 0) (41 . 0) (42 .
0) (210 0.0 0.0 1))

请高手指点,错在何处了,不胜感激。

发表于 2006-12-16 21:55:00 | 显示全部楼层
我觉得最好用vlisp写,这样省得记繁杂的dxf组码!
 楼主| 发表于 2006-12-16 22:14:00 | 显示全部楼层

vlisp不熟呢,否则也用不着这么麻烦。

发表于 2006-12-16 22:26:00 | 显示全部楼层
找本资料好好研究一下!
发表于 2006-12-18 17:23:00 | 显示全部楼层

如果图省事,直接用command函数,调用AUTOCAD的pline命令.程序十分明了.

当然显得不是十分专业.

发表于 2006-12-18 19:59:00 | 显示全部楼层
这个问题好象在哪儿见过,版主已经给了你很好的答复!
发表于 2006-12-19 08:15:00 | 显示全部楼层
  1. ;;表錯了!
  2. (entmake
  3.     (append
  4.       (list
  5. (cons 0 "LWPOLYLINE")
  6. (cons 100 "AcDbEntity")
  7. (cons 410 "model")
  8. (cons 8 "tracklines")
  9. (cons 100 "AcDbPolyline")
  10. (cons 90 POINTNUMBER)
  11. (cons 70 0)
  12.       )
  13.       POINTGROUP
  14.       (list (list 210 0.0 0.0 1))
  15.     )
  16.   )
复制代码
发表于 2006-12-24 23:44:00 | 显示全部楼层
(CONS 5 "150")
这一句有问题,DXF组码为5的是实体的句柄,是由CAD自动生成的,做为对实体在图形的唯一索引,相当于数据库中的自动编号的ID号,在使用entmake语句时不能定义实体的句柄
发表于 2020-2-16 14:33:34 | 显示全部楼层
组码错了,修改一下就得了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-18 11:16 , Processed in 0.177717 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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