找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 12526|回复: 78

[每日一码] 幻灯片SLD生成DWG(提取幻灯片数据用LINE画到图中)

  [复制链接]

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-4-11 19:49:14 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 marting 于 2018-4-11 19:56 编辑

读取幻灯数据,充满窗口绘制,有流文件读取的函数,和充满窗口的点的矩阵变换函数,纯LISP实现。

搜狗截图20180411195025.png

游客,如果您要查看本帖隐藏内容请回复


  1. (defun xd::slide:->dwg (sld)
  2.   (defun _init ()
  3.     (xd::file:seek 18)
  4.     (setq lever (car (xd::file:read 1)))
  5.     (if (= lever 1)
  6.       (progn)
  7.       (progn (setq limit_x  (xd::file:bin2int (xd::file:read 2))
  8.                    limit_y  (xd::file:bin2int (xd::file:read 2))
  9.                    aspratio (xd::file:bin2int (xd::file:read 4))
  10.              )
  11.       )
  12.     )
  13.     (setq aspratio (/ aspratio 1000000.0))
  14.     (setq box    (XD::Doc:GetView4Pnt)
  15.           origin (car box)
  16.           h      (distance (nth 1 box) (nth 2 box))
  17.           w      (distance (nth 0 box) (nth 1 box))
  18.     )
  19.     (if (< h w)
  20.       (progn (setq sy      (/ limit_x (* aspratio limit_y))
  21.                    sx      1
  22.                    limit_y (/ limit_x aspratio)
  23.                    sx      (/ h limit_y)
  24.                    sy      (* sy sx)
  25.              )
  26.       )
  27.       (progn (setq sy 1
  28.                    sx (* limit_y aspratio)
  29.                    sy (/ w limit_x)
  30.                    sx (* sx sy)
  31.              )
  32.       )
  33.     )
  34.     (xd::file:seek "4")
  35.   )
  36.   (defun _draw_line ()
  37.     (setq from_x (xd::file:bin2int fcode))
  38.     (setq val (xd::file:read 2))
  39.     (setq from_y (xd::file:bin2int val))
  40.     (setq val (xd::file:read 2))
  41.     (setq to_x (xd::file:bin2int val))
  42.     (setq val (xd::file:read 2))
  43.     (setq to_y (xd::file:bin2int val))
  44.     (setq p1 (list (atof (itoa from_x)) (atof (itoa from_y)) 0.0)
  45.           p2 (list (atof (itoa to_x)) (atof (itoa to_y)) 0.0))
  46.     (setq points (cons (list p1
  47.                              p2
  48.                        )
  49.                        points
  50.                  )
  51.     )
  52.     (command "line" (_trans p1) (_trans p2) "")
  53.     (command "chprop" (entlast) "" "color" m_cadcolor "")
  54.     (setq lastx to_x
  55.           lasty to_y
  56.     )
  57.   )
  58.   (defun _chg_color ()
  59.     (setq m_cadcolor oper)
  60.   )
  61.   (defun _draw_offset ()
  62.     (setq offx1 oper)
  63.     (setq val (xd::file:read 1))
  64.     (setq offy1 (car val))
  65.     (setq val (xd::file:read 1))
  66.     (setq offx2 (car val))
  67.     (setq val (xd::file:read 1))
  68.     (setq offy2 (car val))
  69.     (setq fromx (+ lastx offx1)
  70.           fromy (+ lasty offy1)
  71.           tox   (+ lastx offx2)
  72.           toy   (+ lasty offy2)
  73.           lastx fromx
  74.           lasty fromy
  75.           y1    fromy
  76.           y2    toy
  77.           p1    (list (atof (itoa fromx)) y1 0.0)
  78.           p2    (list (atof (itoa tox)) y2 0.0)
  79.     )
  80.     (if (not (equal p1 p2 1e-3))
  81.       (progn (command "line" (_trans p1) (_trans p2) "")
  82.              (command "chprop" (entlast) "" "color" m_cadcolor "")
  83.       )
  84.     )
  85.   )
  86.   (defun _draw_common_pt ()
  87.     (setq fromx lastx
  88.           fromy lasty
  89.           offx2 oper
  90.     )
  91.     (setq val (xd::file:read 1))
  92.     (setq offy2 (car val))
  93.     (setq tox   (+ lastx offx2)
  94.           toy   (+ lasty offy2)
  95.           lastx tox
  96.           lasty toy
  97.           y1    fromy
  98.           y2    toy
  99.           p1    (list fromx y1 0)
  100.           p2    (list tox y2 0)
  101.     )
  102.     (if (not (equal p1 p2 1e-3))
  103.       (progn (command ".line" (_trans p1) (_trans p2) "")
  104.              (command "chprop" (entlast) "" "color" m_cadcolor "")
  105.       )
  106.     )
  107.   )
  108.   (defun _eof_code () (princ))
  109.   (defun _trans (pt)
  110.     (setq ljb pt
  111.           scl (min sx sy)
  112.           pt  (mapcar '(lambda (x) (* scl x)) pt)
  113.     )
  114.     (setq m (xd::mat:identity 3))
  115.     (setq m (xd::mat:translation origin))
  116.     (setq pt (xd::point:transform pt m))
  117.     pt
  118.   )
  119.   (defun _trans1 (pt) pt)
  120.   (if (and (setq sld (findfile sld))
  121.            (xd::file:open sld 1)
  122.            (= (xd::file:bin2str (xd::file:read 17))
  123.               "AutoCAD Slide\r\n\032"
  124.            )
  125.       )
  126.     (progn (_init)
  127.            (setq tf t
  128.                  points nil
  129.            )
  130.            (while (and tf (setq fcode (xd::file:read 2)))
  131.              (setq oper (car fcode)
  132.                    func (cadr fcode)
  133.              )
  134.              (cond ((and (>= func 128) (<= func 250)) (setq tf nil))
  135.                    ((<= func 127) (_draw_line))
  136.                    ((= func 251) (_draw_offset))
  137.                    ((= func 252) (_eof_code))
  138.                    ((= func 253) (_draw_solid))
  139.                    ((= func 254) (_draw_common_pt))
  140.                    ((= func 255) (_chg_color))
  141.              )
  142.            )
  143.            (xd::file:close)
  144.     )
  145.   )
  146.   (princ)
  147. )


执行命令TT

  1. (defun c:tt ()
  2.   (if (setq sld (getfiled "\n选择生成DWG的SLD文件" "" "sld" 4))
  3.     (progn (xd::slide:->dwg sld))
  4.   )
  5.   (princ)
  6. )


评分

参与人数 1D豆 +5 收起 理由
newer + 5 好主题奖!

查看全部评分

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

已领礼包: 20个

财富等级: 恭喜发财

 楼主| 发表于 2018-4-11 19:55:58 | 显示全部楼层
要想按原来大小绘制,把上面代码里面的函数 _trans1 改成  _trans 就可以了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2018-4-11 19:59:13 | 显示全部楼层
大师怎么有这么多时间研究呀..真厉害

点评

大师已经走火入魔,停不下来了.......  详情 回复 发表于 2018-4-12 08:59
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8个

财富等级: 恭喜发财

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-4-11 20:17:32 | 显示全部楼层
不仅仅是满足研究幻灯库的格式了,这个要对SLD的格式有很深的理解,才能做到字节级的读取二进制的SLD,并把点连接起来
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8644个

财富等级: 富甲天下

发表于 2018-4-11 20:20:45 | 显示全部楼层
圆弧用线段拟合?

点评

幻灯片数据就是这样,里面只有颜色号、点X,点Y,SOLID,和字体SHX一样,起笔落笔,偏移,再起笔落笔  详情 回复 发表于 2018-4-11 20:30
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-4-11 20:30:52 | 显示全部楼层
liuyj 发表于 2018-4-11 20:20
圆弧用线段拟合?

幻灯片数据就是这样,里面只有颜色号、点X,点Y,SOLID,和字体SHX一样,起笔落笔,偏移,再起笔落笔
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2226个

财富等级: 金玉满堂

发表于 2018-4-12 08:03:04 | 显示全部楼层
本帖最后由 cable2004 于 2018-4-12 08:32 编辑

研究幻灯片数据,厉害呀!

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

使用道具 举报

已领礼包: 6881个

财富等级: 富甲天下

发表于 2018-4-12 08:28:13 | 显示全部楼层
大师能不能搞一个类似天正建筑中的
幻灯管理的集成应用啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2124个

财富等级: 金玉满堂

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

使用道具 举报

已领礼包: 1336个

财富等级: 财源广进

发表于 2018-4-12 08:59:11 | 显示全部楼层
q3_2006 发表于 2018-4-11 19:59
大师怎么有这么多时间研究呀..真厉害

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

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

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

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

 楼主| 发表于 2018-4-12 12:21:01 | 显示全部楼层
ynhh 发表于 2018-4-12 08:28
大师能不能搞一个类似天正建筑中的
幻灯管理的集成应用啊

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

使用道具 举报

已领礼包: 2963个

财富等级: 家财万贯

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

使用道具 举报

已领礼包: 6881个

财富等级: 富甲天下

发表于 2018-4-12 13:46:34 | 显示全部楼层
管理内容包括:增加、删除、拷贝、移动、改名等。

新建】:新建一个用户幻灯库文件,选择文件位置并输入文件名称。

       【打开】:用户选择需要编辑的幻灯库文件。如果该文件不存在,则取消操作。幻灯库文件后缀为SLB。每个幻灯库可包含一个或多个幻灯片SLD文件。本系统支持多库操作,即不关闭当前库的条件下打开目标幻灯片文件,并将此文件设为当前库。

提示:【打开】具有记录历史的功能,可显示最后4次打开的库文件。

【批量入库】:可将所选定的幻灯片SLD文件添加到当前幻灯库中。

【拷贝到】将幻灯库中的幻灯片文件提取出来,另存到指定的目录下中,形成单独的幻灯片文件。

提示:要将幻灯库中的幻灯片文件复制到指定的SLB文件中,可以将目标SLB幻灯库加入管理系统,然后才用鼠标拖拽此幻灯片文件至SLB即可。

(红)【删除】将选中的幻灯库从系统面板中删除。

天正幻灯界面.png
(黑)  【删除】将选中的幻灯片从幻灯库中删除,不可恢复。

其他功能可以参考图库管理界面。

评分

参与人数 1D豆 +5 收起 理由
marting + 5 有始有终奖!

查看全部评分

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-18 21:01 , Processed in 0.437916 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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