找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 896|回复: 6

[求助] lisp程序的线宽、线颜色

[复制链接]
发表于 2017-8-7 19:15:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
请教各位大侠:    我采用lisp,读出多义线,对每个坐标点处理后,再用enrmakex()重新生成多义线,但保留原来的所有特性。但在处理后发现,有些信息未达到预想结果,也不知在哪些设置上有问题:
1、图层原来颜色为bylayer,设置了颜色,但lisp读出颜色62为nil,在图元表中确实没有表62,。如果在entmakex不设置62的值,则发生错误。任意设置颜色值后,生成后颜色为byblock,应如何处理?

2、组码370与组码43:
    如果不设置组码43,则生不成多义线。设置全局宽度后,读出了43的值(如0.2),在图元表中也有该表,但在entmakex()中设置了(43  . 0.2),生成的多义线宽度并没有显示为0.2。查看该多义线特性,43为0.0。
   组码370基本上也是这种情况。
   应该如何设置处理这几组码表?
附:我采用的多义线函数
;;Entmake点表生成多段线
(defun mkpolyline (line_layer line_color line_type  line_kd line_43 line_bz p_lst / pt)
  (print line_43)
  (entmakeX
    (append
      (list '(0 . "LWPOLYLINE")
     '(100 . "AcDbEntity")
      (cons 8 line_layer)
      (cons 62 line_color)
      (cons 6 line_type)
      ;(cons 370 line_kd)
      (cons 43 line_43)
     '(100 . "AcDbPolyline")
      (cons 90 (length p_lst))
      (cons 70 line_bz)
      )
      (mapcar '(lambda (pt) (cons 10 pt)) p_lst)
    )
  )
)


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 19个

财富等级: 恭喜发财

发表于 2017-8-7 20:15:45 | 显示全部楼层
回答下1, 如果没有组码 62, 就是 bylayer的,你自己程序判断处理下。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2017-8-7 20:23:10 | 显示全部楼层
第一个问题:随层的颜色号是256,随块是0。
第二个问题:看代码没什么问题,应该是显示问题,使用组码43的实际线宽时,可以设置大一点的值看看,设置组码370的显示线宽时,需要把显示/隐藏线宽的选项打开。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-8-7 20:38:29 | 显示全部楼层
上次不是帮你改好了吗,怎么又发帖了

  1. (defun mkpolyline (line_layer line_color line_type  line_kd
  2.                    line_43    line_bz         p_lst            /
  3.                    pt
  4.                   )
  5.   (print line_43)
  6.   (entmakeX (append (list '(0 . "LWPOLYLINE")
  7.                           '(100 . "AcDbEntity")
  8.                           (cons 8 line_layer)
  9.                           (cons 62 line_color)
  10.                           (cons 6 line_type) ;(cons 370 line_kd)
  11.                           '(100 . "AcDbPolyline")
  12.                           (cons 43 line_43)
  13.                           (cons 90 (length p_lst))
  14.                           (cons 70 line_bz)
  15.                     )
  16.                     (mapcar '(lambda (pt) (cons 10 pt)) p_lst)
  17.             )
  18.   )
  19. )



把43放到100的后面。

(mkpolyline "bylayer" 1 "bylayer" 10.0 10.0 1 pts)


QQ截图20170807203334.png
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-8-7 20:44:55 | 显示全部楼层
告诉你个方法,你自己画个带宽度的多段线,然后ENTGET

命令: (entget (entlast))
((-1 . <图元名: 7ff6152059a0>) (0 . "LWPOLYLINE") (330 . <图元名: 7ff6152039f0>) (5 . "1D2") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "bylayer") (62 . 1) (100 . "AcDbPolyline") (90 . 5) (70 . 1) (43 . 10.0) (38 . 0.0) (39 . 0.0) (10 1987.17 706.011) (40 . 10.0) (41 . 10.0) (42 . 0.0) (91 . 0) (10 2330.49 973.786) (40 . 10.0) (41 . 10.0) (42 . 0.0) (91 . 0) (10 1862.15 1310.98) (40 . 10.0) (41 . 10.0) (42 . 0.0) (91 . 0) (10 1681.57 969.819) (40 . 10.0) (41 . 10.0) (42 . 0.0) (91 . 0) (10 1987.17 706.011) (40 . 10.0) (41 . 10.0) (42 . 0.0) (91 . 0) (210 0.0 0.0 1.0))


组码的顺序,你看ACAD返回给你的,照猫画虎。

其他实体同上。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-7 21:30:27 | 显示全部楼层
谢谢几位大侠!已经解决。
           第一个问题是颜色设置256;
           第二个问题是43表放在100表之后。
            不好意思,初学lisp,在调试函数时是放在100之后,后来改来改去结果放在100之前了。
         
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 774个

财富等级: 财运亨通

发表于 2017-8-7 22:35:09 | 显示全部楼层
学习了,谢谢各位!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-12 09:42 , Processed in 0.309425 second(s), 44 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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