找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 128882|回复: 63

[原创] 【Gu_xl】CAD表格系列之==== CAD普通线画表格转Table表格

[复制链接]

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-7-6 23:22:33 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 牢固 于 2015-1-20 14:10 编辑

c2t.gif
以下程序需加载XDRX_API使用!2013.07.07更新
主程序代码:
  1. ;;CAD转Table
  2. (defun c:c2t  (/ ANG          COL           COLWIDTHS             FUZZ     H
  3.                  I          INSPT           MAXCOL   MAXROW   MINCOL   MINROW
  4.                  N          ROW           ROWHEIGHTS             SS              TB
  5.                  TBLST          TXTCOLOR TXTH            TXTLST   TXTSS    TXTSTR
  6.                  TXTSTYLE W           X *STARTTIME*  SCALEFACTOR
  7.                 )
  8.   (xdrx_begin '("cmdecho" 0 "osmode" 0))
  9.   (setq ss (ssget '((0 . "line,*polyline"))))
  10.   (setq Inspt (trans (getpoint "\n位置点:") 1 0)
  11.         fuzz (getreal "\n设置容差值<0.01>")
  12.         )
  13.   (if (null Fuzz) (setq Fuzz 0.01))
  14.   (if ss
  15.     (progn
  16.       (setq *StartTime* (car (_VL-TIMES)))
  17.       (setq tblst (GETTABLELST ss Fuzz))
  18.       (setq ;InsPt (car (cadaar tblst))
  19.             ang (angle (car (cadaar tblst)) (cadr (cadaar tblst)))
  20.             Row (nth 4 tblst)
  21.             Col (nth 2 tblst)
  22.             ColWidths (nth 5 Tblst)
  23.             RowHeights (nth 6 Tblst)
  24.             )
  25.       (setq tb (xdrx_table_make InsPt (1+ row) 10. col 12.))
  26.       (XD::Table:Begin tb)
  27.       (vla-SetAlignment (vlax-ename->vla-object tb) 1 acMiddleCenter)
  28.       (vla-SetAlignment (vlax-ename->vla-object tb) 2 acMiddleCenter)
  29.       (vla-SetAlignment (vlax-ename->vla-object tb) 4 acMiddleCenter)
  30.       (XDRX_TABLE_DELETEROWS tb 0 1) ;_ 删除表头
  31.       (XDRX_TABLE_SETHORZCELLMARGIN tb 0.0)
  32.       (XDRX_TABLE_SETVERTCELLMARGIN tb 0.0)
  33.       ;|(setq r -1)
  34.       (repeat row
  35.         (setq r (1+ r) c -1)
  36.         (repeat col
  37.           (setq c (1+ c))
  38.           (xdrx_table_SetAutoScale tb r c nil)
  39.           )
  40.         )|;
  41.       (setq i -1)
  42.       (mapcar '(lambda (w)(setq i (1+ i)) (XDRX_TABLE_SETCOLUMNWIDTH tb  i w))  ColWidths)
  43.       (setq i -1)
  44.       (mapcar '(lambda (h)(setq i (1+ i)) (xdrx_table_SetRowHeight tb  i h))  RowHeights)
  45.       (foreach cell (car tblst)
  46.         (mapcar        'set
  47.                 '(minCol minRow maxCol maxRow)
  48.                 (mapcar '1-
  49.                 (apply 'append
  50.                        (mapcar 'VLXLS-RANGEID (VLXLS-CELLID (car cell)))
  51.                 )
  52.                         )
  53.         )
  54.         (if (or (/= minRow maxRow)
  55.                 (/= minCol maxCol)
  56.                 ) ;_ 合并单元格
  57.             (XDRX_TABLE_MERGECELLS tb minRow maxRow minCol maxCol)
  58.           )
  59.             (setq txtss (ssget "cp" (mapcar '(lambda (x) (trans x 0 1)) (cadr cell)) '((0 . "*text"))))
  60.             (if txtss
  61.               (progn
  62.                 (setq txtlst nil)
  63.                 (repeat (setq n (sslength txtss))
  64.                   (setq txtlst (cons (ssname txtss (setq n (1- n))) txtlst))
  65.                   )
  66.                 (setq txtlst (vl-sort txtlst '(lambda (a b) (> (cadr (gxl-dxf a 10)) (cadr (gxl-dxf b 10))))))
  67.                 (setq txtstr (gxl-dxf (car txtlst) 1)
  68.                       txth (gxl-dxf (car txtlst) 40)
  69.                       txtstyle (tblobjname "style" (gxl-dxf (car txtlst) 7))
  70.                       txtcolor (gxl-dxf (car txtlst) 62)
  71.                       )
  72.                 (if (and
  73.                       (= "TEXT" (gxl-dxf (car txtlst) 0))
  74.                       (equal 1.0 (setq Scalefactor (gxl-dxf (car txtlst) 41)) 1e-3)
  75.                       )
  76.                   (setq Scalefactor nil)
  77.                   )
  78.                 (setq txtlst (cdr txtlst))
  79.                 (foreach e txtlst
  80.                   (setq txtstr (strcat txtstr "\\P" (gxl-dxf e 1)))
  81.                   )
  82.                 (if Scalefactor (setq txtstr (strcat "{\\W" (rtos Scalefactor 2 2)";" txtstr "}")))
  83.                 (xdrx_table_SetTextString tb minRow minCol txtstr)
  84.                 (XDRX_TABLE_SETTEXTHEIGHT tb minRow minCol txth )
  85.                 (XDRX_TABLE_SETTEXTstyle tb minRow minCol txtstyle)
  86.                 (XDRX_TABLE_SETCONTENTCOLOR tb minRow minCol txtcolor)
  87.                 )
  88.               )

  89.         
  90.         )
  91.       (XDRX_ENTITY_TRANSFORM tb (Gxl-MAT:Rotation3D Inspt '(0 0 1) ang))
  92.       (XD::Table:End tb)
  93.       (princ (strcat "\n  用时  " (rtos (* 0.001 (- (car (_VL-TIMES)) *StartTime*)) 2 4) "  秒 "))
  94.       )
  95.     )
  96.   (xdrx_end)
  97.   (princ)
  98.   )

完整源码下载:
游客,本帖隐藏的内容需要积分高于 50 才可浏览,您当前积分为 0

免费编译Fas文件:
请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:C2T.rar 
下载次数:209  文件大小:8.33 KB 
下载权限: 学生 以上  [免费赚D豆]


评分

参与人数 2威望 +2 D豆 +15 贡献 +3 收起 理由
XDSoft + 2 + 10 + 3 很给力!经验;技术要点;资料分享奖!
Lisphk + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

本帖被以下淘专辑推荐:

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

已领礼包: 344个

财富等级: 日进斗金

 楼主| 发表于 2013-12-30 15:49:40 | 显示全部楼层
lucas3 发表于 2013-12-30 15:08
G版主,为啥不发到明径上面去?

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-7-6 23:28:11 | 显示全部楼层
G版,旋转矩阵的XDRX_API用法。

  1. (MAT:Rotation3D Inspt '(0 0 1) ang)


------->>

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2013-7-6 23:38:45 | 显示全部楼层
G大大,我的图测试了下,见图,有问题。
QQ截图20130706233709.png

我那个图在这个帖子里面,帮忙用这个测试下。

http://bbs.xdcad.net/thread-669093-1-1.html

点评

(XDRX_TABLE_MERGECELLS tb minRow maxRow minCol maxCol) 这句有问题!可能是API函数XDRX_TABLE_MERGECELLS的问题!在0行合并单元格出错!  详情 回复 发表于 2013-7-7 00:25
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

 楼主| 发表于 2013-7-7 00:25:00 | 显示全部楼层
Lisphk 发表于 2013-7-6 23:38
G大大,我的图测试了下,见图,有问题。

(XDRX_TABLE_MERGECELLS tb minRow maxRow minCol maxCol)
这句有问题!可能是API函数XDRX_TABLE_MERGECELLS的问题!在0行合并单元格出错!

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

使用道具 举报

发表于 2013-7-7 07:48:07 来自手机 | 显示全部楼层
0行是title不能合并,所以转的时候要加一个空title行,表格在table是从1行开始的来自: Android客户端

点评

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

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

 楼主| 发表于 2013-7-7 07:50:12 | 显示全部楼层
Free-Lancer 发表于 2013-7-7 07:48
0行是title不能合并,所以转的时候要加一个空title行,表格在table是从1行开始的

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

使用道具 举报

发表于 2013-7-7 07:51:50 来自手机 | 显示全部楼层
table要比line表格多一行,从1行开始对应line表格来自: Android客户端
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2013-7-7 07:57:19 来自手机 | 显示全部楼层
牢固 发表于 3&nbsp;分钟前

0行的表头已经被删除了!

先按1开始写入table,全部完成后再删除title行来自: Android客户端
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 403个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 403个

财富等级: 日进斗金

发表于 2013-7-7 08:38:23 | 显示全部楼层
本帖最后由 sjj 于 2013-7-7 09:55 编辑

; 错误: no function definition: xdrx_document_ucsoff
:'(
好不容易凑了20个豆豆,下了LSP
问题依在!

点评

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

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

 楼主| 发表于 2013-7-7 10:08:18 | 显示全部楼层
sjj 发表于 2013-7-7 08:38
; 错误: no function definition: xdrx_document_ucsoff

好不容易凑了20个豆豆,下了LSP

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

使用道具 举报

已领礼包: 403个

财富等级: 日进斗金

发表于 2013-7-7 10:09:36 | 显示全部楼层
; 错误: function definition: GXL-GETTABLELST

点评

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

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

 楼主| 发表于 2013-7-7 10:16:10 | 显示全部楼层
sjj 发表于 2013-7-7 10:09
; 错误: function definition: GXL-GETTABLELST

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

使用道具 举报

已领礼包: 403个

财富等级: 日进斗金

发表于 2013-7-7 16:04:00 | 显示全部楼层
:D新版XDRX_API来了
有新情况:
; 错误: no function definition: XDRX_TABLE_MAKE

点评

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 19:35 , Processed in 0.471123 second(s), 67 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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