陈亚娣 发表于 2013-7-29 15:14:48

用Entmake创建属性块时碰到问题!搞测绘的有没有?请教个问题【已解决】

本帖最后由 陈亚娣 于 2013-7-29 16:49 编辑

搞测绘的有没有?
(Defun C:2 ()
(Setq Blc (* (/ (Getvar "Userr1") 1000.0) 1.0))
(Setq Scale Blc)
(Setq P1 (List 200 200 2.356))
(Setq Height (Caddr P1))
(Entmake (List
             '(0 . "Insert")
             '(100 . "Acdbentity")
             '(100 . "Acdbblockreference")
             '(66 . 1);;;属性跟随标志,1跟随,0不跟随
             (Cons 2 "Gc200")
             (Cons 10 P1)
             (Cons 8 "Gcd")
             (Cons 41 Scale)                ;Scale比例大小
             (Cons 42 Scale)                ;Scale比例大小
             (Cons 43 Scale)                ;Scale比例大小
             '(-3 ("South" (1000 . "202101")))
         )
)
;;;插入属性
(Entmake (List
             '(0 . "Attrib")
             '(100 . "Acdbentity")
             '(100 . "Acdbtext")
             (Cons 10 (Setq Pt (Polar P1 0 (* 1.2 Scale))))
                                        ;Scale比例大小
             (Cons 40 (* 2.0 Scale))      ;Scale比例大小
             (Cons 50 0)
             (Cons 41 0.8)
             (Cons 51 0)
             (Cons 1 Height);Height高程注记
             (Cons 7 "Hz")
             (Cons 72 0)
             (Cons 11 Pt)
             '(100 . "Acdbattribute")
             (Cons 2 "Height")
             (Cons 70 0)
             (Cons 74 2)
         )
)
;;;结束标志
(Entmake '((0 . "SEQEND")))
)
这段代码中的(Cons 1 Height);Height高程注记,运行到这就出现DXF码错误!要怎么处理?
求解猫老师、高手能人

有时也会出现冲突或无法创建复杂对象这些情况

技术工作室 发表于 2014-6-28 09:44:24

(Cons 1 Height);Height高程注记更改为(Cons '1 Height);1前面加个单引号应该就可以用的

技术工作室 发表于 2014-6-28 10:04:16

(Setq Height (Caddr P1))改为(Setq Height (rtos(Caddr P1)))加上rtos函数把高程值转换为字符串

Student 发表于 2013-7-29 15:23:06

本问题似乎并非测绘专业问题
在调试状态下运行,出错后,看height的值,应该能判断处出错的原因
(猜测:height非文本或nil)

陈亚娣 发表于 2013-7-29 15:25:58

Student 发表于 2013-7-29 15:23 static/image/common/back.gif
本问题似乎并非测绘专业问题
在调试状态下运行,出错后,看height的值,应该能判断处出错的原因
(猜测: ...

运行后height的值是2.356!是有值的!但是我不会分是不是非文本或者是什么!

zdqwy19 发表于 2013-7-29 16:47:08

陈亚娣 发表于 2013-7-29 15:25 static/image/common/back.gif
运行后height的值是2.356!是有值的!但是我不会分是不是非文本或者是什么!

(Cons 1 Height);Height高程注记中的1后面不能是数字,字符可以,Autodesk公司可能对组码前缀做了限制

flytoday 发表于 2014-4-13 17:15:19

解决了共亨下吧老大~

陈亚娣 发表于 2014-4-14 07:40:14

flytoday 发表于 2014-4-13 17:15 static/image/common/back.gif
解决了共亨下吧老大~

;;(setq XPOINT '(100 100 3.56))
(defun vl_gc200()
(Setq Blc (* (/ (Getvar "Userr1") 1000.0) 1.0))
(Setq Scale Blc)
(setq Height (caddr XPOINT))
(Entmake (List
             '(0 . "Insert")
             '(100 . "Acdbentity")
             ;'(100 . "Acdbblockreference")
             ;'(66 . 1);;;属性跟随标志,1跟随,0不跟随
             (Cons 2 "Gc200")
             (Cons 10 XPOINT)
             (Cons 8 "GCD")
             (Cons 41 Scale)                ;Scale比例大小
             (Cons 42 Scale)                ;Scale比例大小
             (Cons 43 Scale)                ;Scale比例大小
             '(-3 ("SOUTH" (1000 . "202101")))
           )
             )
   )

flytoday 发表于 2014-4-14 08:45:33

命令: 2
; 错误: 参数类型错误: numberp: nil

陈亚娣 发表于 2014-4-14 10:04:36

本帖最后由 陈亚娣 于 2014-4-14 10:06 编辑

flytoday 发表于 2014-4-14 08:45 static/image/common/back.gif
命令: 2
; 错误: 参数类型错误: numberp: nil;;测试前你先设置好比例试试
(defun vl_gc200()
(setq XPOINT '(100 100 3.56))
(Setq Blc (* (/ (Getvar "Userr1") 1000.0) 1.0));;计算插入点比例
(Setq Scale Blc)
(setq Height (caddr XPOINT))
(Entmake (List
             '(0 . "Insert")
             '(100 . "Acdbentity")
             ;'(100 . "Acdbblockreference")
             ;'(66 . 1);;;属性跟随标志,1跟随,0不跟随
             (Cons 2 "Gc200")
             (Cons 10 XPOINT)
             (Cons 8 "GCD")
             (Cons 41 Scale)                ;Scale比例大小
             (Cons 42 Scale)                ;Scale比例大小
             (Cons 43 Scale)                ;Scale比例大小
             '(-3 ("SOUTH" (1000 . "202101")))
         )
             )
   )


页: [1] 2
查看完整版本: 用Entmake创建属性块时碰到问题!搞测绘的有没有?请教个问题【已解决】