MMS 发表于 2022-7-6 08:30:09

联接表

能解释一下如何从ACAD表中提取数据吗。我尝试转储对象,但找不到数据。
我想看看连接表的结构数据。
 
; IAcadTable: IAcadTable Interface
; Property values:
;   AllowManualHeights = 0
;   AllowManualPositions = 0
;   Application (RO) = #<VLA-OBJECT IAcadApplication 00d5f1d4>
;   BreaksEnabled = 0
;   BreakSpacing = 0.99
;   Columns = 6
;   ColumnWidth (RO) = ...Indexed contents not shown...
;   Direction = (1.0 0.0 0.0)
;   Document (RO) = #<VLA-OBJECT IAcadDocument 02b6de18>
;   EnableBreak (RO) = ...Indexed contents not shown...
;   FlowDirection = 1
;   Handle (RO) = "ACB1F"
;   HasExtensionDictionary (RO) = 0
;   HasSubSelection (RO) = 0
;   HeaderSuppressed = -1
;   Height = 4.12
;   HorzCellMargin = 3.0
;   Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 2331417c>
;   InsertionPoint = (-1393.84 128.008 0.0)
;   Layer = "Construction Line"
;   Linetype = "ByLayer"
;   LinetypeScale = 3.0
;   Lineweight = -1
;   Material = "ByLayer"
;   MinimumTableHeight (RO) = 4.12
;   MinimumTableWidth (RO) = 54.0
;   ObjectID (RO) = 2082178808
;   ObjectName (RO) = "AcDbTable"
;   OwnerID (RO) = 2043363520
;   PlotStyleName = "ByLayer"
;   RegenerateTableSuppressed = 0
;   RepeatBottomLabels = 0
;   RepeatTopLabels = 0
;   RowHeight (RO) = ...Indexed contents not shown...
;   Rows = 1
;   StyleName = "Standard"
;   TableBreakFlowDirection = 1
;   TableBreakHeight = 0.0
;   TableStyleOverrides (RO) = (2)
;   TitleSuppressed = 0
;   TrueColor = #<VLA-OBJECT IAcadAcCmColor 1f2df440>
;   VertCellMargin = 0.06
;   Visible = -1
;   Width = 259.2
 
谢谢
 
UdaAf公司

irneb 发表于 2022-7-6 08:36:49

你在寻找单元格内的值吗?如果是这样,请看我在这个线程中的代码:http://forums.augi.com/showthread.php?t=135274
 
奇怪的是,相似的问题如此紧密地联系在一起
 
顺便说一句,要修改表,还需要它的方法。vlax dump对象仅在发送非nil第二个参数时显示这些。

Lee Mac 发表于 2022-7-6 08:41:41

要基于Irneb的建议,请使用:
 
显示除属性外与对象相关的所有方法。
 
要检索单元格值,请研究GetText/GetCellValue/GetValue方法。
 

MMS 发表于 2022-7-6 08:45:48

谢谢大家的回答。我会努力的。
 
谢谢
 
UdaAf公司

MMS 发表于 2022-7-6 08:51:32

请为我的代码提供建议。我认为算法是正确的,但仍然无法从表中获得值。
 
(defun c:jontab ()
(vl-load-com)
(setq        TblSel          (car (entsel "\nPilih Table Utama:"))
TblObj          (vlax-ename->vla-object TblSel)
Columns_1 (vla-get-columns TblObj)
Rows_1          (vla-get-rows TblObj)
)
;Membuat List Kosong Untuk Mengumpulkan Data
(setq TblValList_1'())
(setq        row 0
column 0
)
(repeat Rows_1
   (repeat Columns_1
   (setq TblVal       (vla-gettext TblObj row column)
    TblValList_1 (cons TblVal TblValList_)
    column       (1+ column)
   )                                        ;setq
   )                                        ;repeat
   (setq row       (1+ row)
column 1
   )                                        ;reset column menjadi 1
)                                        ;repeat
);defun

 
谢谢
 
UdaAf公司

Lee Mac 发表于 2022-7-6 08:59:33

试试这个,写得很快,但以矩阵形式返回的列表格式对我来说似乎更直观:
 
(defun c:jontab ( / i j l o r s )
   (if (setq s (ssget "_+.:E:S" '((0 . "ACAD_TABLE"))))
       (progn
         (setq o (vlax-ename->vla-object (ssname s 0)))
         (repeat (setq i (vla-get-rows o))
               (setq i (1- i))
               (repeat (setq j (vla-get-columns o))
                   (setq j (1- j)
                         l (cons (vla-gettext o i j) l))
               )
               (setq r (cons l r)
                     l nil
               )
         )
         r
       )
   )
)
(vl-load-com)

MMS 发表于 2022-7-6 09:02:32

嗨,李,
 
李代码不错。我将为join 2表或更多表改进此代码。
 
谢谢
 
UdaAf公司

Lee Mac 发表于 2022-7-6 09:07:28

谢谢UdaAf
 
祝你好运

MMS 发表于 2022-7-6 09:10:56

嗨,李,
 
请提供此代码的建议。我想我的代码L00035是错的。如果我选择行数量为1的表,这没有问题。但如果我选择数量大于1的行,则最后一行没有字段。
这是代码;
 
4

Lee Mac 发表于 2022-7-6 09:15:46

尝试以下操作:
 
[颜色=绿色];;合并表-Lee Mac-www.Lee-Mac。com(defunc:MergeTables(/*error*\u entsel acdoc c c2 i j l r r2 t1 t2 x y)(defun*error*(msg)(ifacdoc(vla endundomarkacdoc))(if(not(wcmatch(strcasemsg)[=“*中断,*取消*,*退出*”)(princ(strcat”\n错误:“msg”)(princ)(defun\u entsel(msg filter/msg)(setvar'NOMUTT 1)(setqsel(vl catch all apply'ssget(list“_+:E:S:L”filter))(setvar'NOMUTT 0)(if(和sel(not(vl-catch-all-error-psel))(ssnamesel 0))(if(和(setqt1(\u entsel“\n选择要合并的表:“”((0。“ACAD\u Table”))(setqt2(\u entsel“\n选择要合并的表:“”((0。“ACAD\u Table”))))(progn(setqacdoc(vla get activedocument(vlax get acad object)(vla startundomarkacdoc)(setqt1(vlax ename->vla objectt1)t2(vlax ename->vla objectt2))(repeat(setqi(vla get rowst1)(setqi(1-i))(repeat(setqj(setqj(1-j)l(cons(vla gettextt1 i j)l)))(setqr(consl r)lnil)(setqc2(vla get columnst2)r2(vla get rowst2))(if(
页: [1] 2
查看完整版本: 联接表