联接表
能解释一下如何从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公司 你在寻找单元格内的值吗?如果是这样,请看我在这个线程中的代码:http://forums.augi.com/showthread.php?t=135274
奇怪的是,相似的问题如此紧密地联系在一起
顺便说一句,要修改表,还需要它的方法。vlax dump对象仅在发送非nil第二个参数时显示这些。 要基于Irneb的建议,请使用:
显示除属性外与对象相关的所有方法。
要检索单元格值,请研究GetText/GetCellValue/GetValue方法。
李 谢谢大家的回答。我会努力的。
谢谢
UdaAf公司 请为我的代码提供建议。我认为算法是正确的,但仍然无法从表中获得值。
(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公司 试试这个,写得很快,但以矩阵形式返回的列表格式对我来说似乎更直观:
(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) 嗨,李,
李代码不错。我将为join 2表或更多表改进此代码。
谢谢
UdaAf公司 谢谢UdaAf
祝你好运 嗨,李,
请提供此代码的建议。我想我的代码L00035是错的。如果我选择行数量为1的表,这没有问题。但如果我选择数量大于1的行,则最后一行没有字段。
这是代码;
4 尝试以下操作:
[颜色=绿色];;合并表-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