changyiran 发表于 2012-3-14 20:22:44

使用entmake函数发生的怪事!

我用一下代码创建一个多段线:(entmake '((0 . "LWPOLYLINE")
      (100 . "AcDbEntity")
      (100 . "AcDbPolyline")
       (62 . 5)
      (10 0 64.30)
      (10 200 64.35)
      (10 400 64.04)
      (10 600 64.14)
      (10 800 64.39)
      (10 1000 64.29)
      (10 1250 64.44)
      )
   )
,但奇怪的事,创建的图元无论把图放多大,都只能看见一个点,并且查询他的图元表,发现以10为组码的坐标全是0,并且只剩下两个顶点坐标,真是让我百思不得其解,恳请高手们帮忙啊!
下面是查询到的图元表:
((-1 . <图元名: 7ef6e9c8>) (0 . LWPOLYLINE) (330 . <图元名: 7ef6ccc0>) (5 .
4A9) (100 . AcDbEntity) (67 . 0) (410 . Model) (8 . 0) (62 . 5) (6 .
Continuous) (100 . AcDbPolyline) (90 . 2) (70 . 0) (43 . 0.0) (38 . 0.0) (39 .
0.0) (10 0.0 0.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 0.0 0.0) (40 . 0.0) (41
. 0.0) (42 . 0.0) (210 0.0 0.0 1.0))

yshf 发表于 2012-3-14 20:40:59

差一项:(90.7)
改为如下即可:
(entmake '((0 . "LWPOLYLINE")
      (100 . "AcDbEntity")
      (100 . "AcDbPolyline")
       (62 . 5)
      (90 . 7)          
      (10 0 64.30)
      (10 200 64.35)
      (10 400 64.04)
      (10 600 64.14)
      (10 800 64.39)
      (10 1000 64.29)
      (10 1250 64.44)
      )
   )

changyiran 发表于 2012-3-15 08:22:10

yshf 发表于 2012-3-14 20:40 static/image/common/back.gif
差一项:(90.7)
改为如下即可:
(entmake '((0 . "LWPOLYLINE")


谢谢,果真如此,关于这个函数,书上介绍的不多,具体到每类图元没有说哪些数据可以省略,哪些数据不可省略,所以才造成我少了一项,呵呵。

fergus1987 发表于 2012-3-15 09:02:55

嗯 学习了 谢谢楼主分享!

yshf 发表于 2013-1-27 22:29:08

回复ynhh :
   40是定义片段的起始宽度,41是定义片段的结束宽度,43是定义全线的宽度,42是定义弧片段的弓弦比(圆弧弓高/弦长)。例如:
(entmake '((0 . "LWPOLYLINE")
         (100 . "AcDbEntity")
         (100 . "AcDbPolyline")
         (62 . 5)
         (90 . 7)
         (10 0 64.30)
         (40 . 10)
         (41 . 0.5)
         (10 200 64.35)
         (42 . 1.0)
         (10 400 64.04)
         (10 600 64.14)
         (10 800 64.39)
         (10 1000 64.29)
         (10 1250 64.44)
      )
   )
生成的多段线,其中第一片段的起始宽度为10,结束宽度为0.5,第二段为逆时针的半圆弧(弓弦比大于零为逆时针转,小于零为顺针转)。如出现43项,则每个片段的起始、结束宽度均43项的值为准。
页: [1]
查看完整版本: 使用entmake函数发生的怪事!