明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4687|回复: 18

[求助][0107]如何参照替换表格栏位资料?

  [复制链接]
发表于 2007-1-7 19:28 | 显示全部楼层 |阅读模式


如何用LISP程序完成下面过程
01.取得文字资料内容,这方法我知道,但下面的02.及03.我就不清楚了.
02.点选表格栏位内要替换的资料位置
03.替换表格资料

烦请各位高手可以解答一下
谢谢

本帖被以下淘专辑推荐:

  • · table|主题: 9, 订阅: 0
 楼主| 发表于 2007-1-8 06:59 | 显示全部楼层

在別處問到了答案轉貼回來給各位看看還可以怎樣改進

(defun C:xtb (/ adoc column pt pvec row tbobj txobj txt)
 
  (vl-load-com)
  (setq adoc (vla-get-activedocument
       (vlax-get-acad-object)
     )
  )
  (vla-startundomark adoc)
  (setq txobj (vlax-ename->vla-object
(car (entsel "\n選取文字"))
      )
txt   (vlax-get txobj 'TextString)
  )
  (setq tbobj
(vlax-ename->vla-object
   (car (entsel "\n選取表格"))
)
  )
  (setq pt   (trans (getpoint "\n點選交換文字表格位置") 1 0)
pvec (getvar "VIEWDIR")
  )
  (vla-hittest
    tbobj
    (vlax-3d-point pt)
    (vlax-3d-point pvec)
    'row
    'column
  )
  (vla-settext tbobj row column txt)
  (vla-endundomark adoc)
  (princ)
)

发表于 2007-1-9 11:52 | 显示全部楼层
  1. ;;BY LUCAS
  2. ;;最好能把選表格省略掉!
  3. ;;http://bbs.mjtd.com/forum.php?mod=viewthread&tid=44719&replyID=&skin=1
  4. ;;注意:要先把指令做成按鈕,要先選好單一儲存格,再點按鈕執行指令!!
  5. (defun C:XTB_LAI1 (/ ADOC DATA TXOBJ TXT)
  6.   (setq ADOC (vla-get-activedocument
  7.         (vlax-get-acad-object)
  8.       )
  9.   )
  10.   (vla-startundomark ADOC)
  11.   (if (and (setq DATA (SELECT_TABLE))
  12.     (setq TXOBJ (car (entsel "\n選取文字: ")))
  13.       )
  14.     (progn
  15.       (setq TXOBJ (vlax-ename->vla-object TXOBJ))
  16.       (setq TXT (vlax-get TXOBJ 'TEXTSTRING))
  17.       (vla-settext (car DATA) (nth 1 DATA) (nth 3 DATA) TXT)
  18.     )
  19.   )
  20.   (vla-endundomark ADOC)
  21.   (vlax-release-object ADOC)
  22.   (princ)
  23. )
  24. (defun SELECT_TABLE (/ TABLE ROWMIN ROWMAX COLMIN COLMAX SS N)
  25.   (setq N 0)
  26.   (if (setq SS (ssget "X" '((0 . "ACAD_TABLE"))))
  27.     (repeat (sslength SS)
  28.       (if (not (vl-catch-all-apply
  29.    'vla-getsubselection
  30.    (list (vlax-ename->vla-object
  31.     (ssname SS N)
  32.          )
  33.          'ROWMIN
  34.          'ROWMAX
  35.          'COLMIN
  36.          'COLMAX
  37.    )
  38.         )
  39.    )
  40. (setq TABLE (vlax-ename->vla-object
  41.         (ssname SS N)
  42.       )
  43. )
  44.       )
  45.       (setq N (1+ N))
  46.     )
  47.   )
  48.   (if ROWMIN
  49.     (list TABLE ROWMIN ROWMAX COLMIN COLMAX)
  50.     NIL
  51.   )
  52. )
  53. (princ)
 楼主| 发表于 2007-1-9 19:59 | 显示全部楼层

请问版主您的SELECT_TABLE 这函数 主要作用是什么

他返回的值是代表什么呢

希望版主可以解答一下

谢谢

发表于 2007-1-10 12:27 | 显示全部楼层

;;注意:要先把指令做成按鈕,要先選好範圍儲存格,再點按鈕執行指令!!
SELECT_TABLE这函数主要作用是返回你可選取儲存格範圍

返回值---寫得很清楚了

(list TABLE ROWMIN ROWMAX COLMIN COLMAX)

发表于 2007-1-10 16:45 | 显示全部楼层

load "ACDBTABLEPACK.VLX" before calling XTB

(defun C:xtb (/ adoc column pt pvec row tbobj txobj txt abc)
  (vl-load-com)
  (setq adoc (vla-get-activedocument
        (vlax-get-acad-object)
      )
  )
  (vla-startundomark adoc)
  (if (and (setq txobj (entsel "\n Pick annotation <Exit>:"))
    (setq txobj (vlax-ename->vla-object (car txobj))
   txt   (vlax-get txobj 'TextString)
    )
    (setq abc (getpoint "\n Pick a point in AcDbTable cell <Exit>:"))
    (setq abc (tblpack-pickcell abc nil nil))
    (setq tbobj (car abc)
   row (nth 1 abc)
   column (nth 2 abc)
    )
      )
    (vla-settext tbobj row column txt)
  )
  (vla-endundomark adoc)
  (princ)
)

发表于 2007-1-11 12:41 | 显示全部楼层
本帖最后由 作者 于 2007-1-11 13:23:09 编辑

有空我也仿一個一樣的[tblpack-pickcell]函數

目前我用selectcell函數

load "selectcell.VLX" before calling Xtb_lai

;;BY LUCAS
;;最好能把選表格省略掉!
(defun C:XTB_LAI (/ ADOC DATA PT TXOBJ TXT)
  (vl-load-com)
  (setq ADOC (vla-get-activedocument
        (vlax-get-acad-object)
      )
  )
  (vla-startundomark ADOC)
  (prompt "\n選取文字")
  (if (and (setq TXOBJ (ssget "+.:E:S" '((0 . "*TEXT"))))
    (setq PT (getpoint "\n點選放置文字儲存格: "))
    (setq PT (trans PT 1 0))
    (setq DATA (SELECTCELL PT))
    ;;SELECTCELL函數傳回值list TABLE ROW COL)
      )
    (progn
      (setq TXOBJ (vlax-ename->vla-object (ssname TXOBJ 0)))
      (setq TXT (vlax-get TXOBJ 'TEXTSTRING))
      (vla-settext (car DATA) (cadr DATA) (last DATA) TXT)
    )
  )
  (vla-endundomark ADOC)
  (vlax-release-object ADOC)
  (princ)
)

 

本帖子中包含更多资源

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

x
发表于 2007-1-12 08:13 | 显示全部楼层

6樓函數有欠函數

指令: xtb

 ick annotation <Exit>:
 ick a point in AcDbTable cell <Exit>:*取消*
Program ERROR: 0 no function definition: VLOBJ-GET-VLA-OBJECT
Resetting...; 錯誤: *錯誤* 功能內部已發生一個錯誤無函數定義: #ERROR

 楼主| 发表于 2007-1-13 23:48 | 显示全部楼层

请问版主

看您这样的描述

 (setq PT (getpoint "\n点选放置文字储存格: ")) 

就可以带入表格物件,那是怎样才选到物件呢

可以解答一下吗

谢谢

 楼主| 发表于 2007-1-14 12:51 | 显示全部楼层
(nentselp PT)是不是要用這命令呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-3 12:15 , Processed in 7.227821 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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