有人能帮我吗
嘿,我留下了前一个帖子,这里有点简单。这是一个例程,它将生成一个表,其中有一个标题,其余单元格用于计算。该表有一列和15行。但当我执行该命令时,计算以十进制形式绘制。如果检查此表的属性,则单元格不是数据单元格。我可以在这个例程中放入什么来制作这些数据单元?这是目前最大的问题。所以我需要让它以英尺、英寸和分数来执行。然后,我希望有人的专业知识,使表插入在正确的大小。基于dimscale因子。有人能帮忙吗?
(DEFUN C:STUBS (/ WIDE COL ROW TB HIGH PT VA VO VM)
(SETQ PT (VLAX-3D-POINT (GETPOINT)))
(SETQ VO (VLAX-GET-ACAD-OBJECT))
(SETQ VA (VLA-GET-ACTIVEDOCUMENT VO))
(SETQ VM (VLA-GET-MODELSPACE VA))
(SETQ ROW 15)
(SETQ COL1)
(SETQ HIGH 0.3875)
(SETQ WIDE 1.25)
(SETQ TB (VLA-ADDTABLE VM PT ROW COL HIGH WIDE))
;(VLA-PUT-REGENERATETABLESUPPRESSED TB :VLAX-TRUE)
(vla-settext tb 0 0 "STUBS")
(vla-settext tb 1 0 (GETDIST "What is the first stub dimension?"))
(vla-settext tb 2 0 "=A2*2")
(vla-settext tb 3 0 "=A2*3")
(vla-settext tb 4 0 "=A2*4")
(vla-settext tb 5 0 "=A2*4")
(vla-settext tb 6 0 "=A2*5")
(vla-settext tb 7 0 "=A2*6")
(vla-settext tb 8 0 "=A2*7")
(vla-settext tb 9 0 "=A2*8")
(vla-settext tb 10 0 "=A2*9")
(vla-settext tb 11 0 "=A2*10")
(vla-settext tb 12 0 "=A2*11")
(vla-settext tb 13 0 "=A2*12")
(vla-settext tb 14 0 "=A2*13")
(vla-settext tb 15 0 "=A2*14")
)
;(vla-put-RegenerateTableSuppressed tb :vlax-TRUE )
(princ)
);_ end
我的问题是,是否需要将标题行设置为特定的文本样式,而将其他单元格设置为不同的样式? 尝试编辑代码,不确定
它将如何工作
运行前更改文字样式名称
(defun C:STUBS (/ col count dis pr prec pt row strdis tb va vm vo)
(setq pt (vlax-3d-point (getpoint "\nPick Insertion Point: ")))
(setq vo (vlax-get-acad-object))
(setq va (vla-get-activedocument vo))
(setq vm (vla-get-modelspace va))
(setq row 16)
(setq col1)
(setq dis (getdist "\nWhat Is The First Stub Dimension? : "))
(initget 6)
(setq prec (getint "\nWhat Is The Number Of Decimal Places? : "))
(setq pr (getvar "LUPREC"))
(setvar "LUPREC" prec)
(if (not (vl-string-search "." (setq strdis (rtos dis 2 2))))
(setq strdis (strcat strdis ".00")))
(setq tb (vla-addtable vm pt row col 1 1))
(vla-put-titlesuppressed tb :vlax-false)
(vla-put-headersuppressed tb :vlax-true)
(vla-put-RegenerateTableSuppressed tb :vlax-true)
(vla-put-vertcellmargin tb 0.1)
(vla-put-horzcellmargin tb 0.25)
(vla-setrowheight tb 0 0.4825)
(vla-setcolumnwidth tb 0 2.4)
(vla-settextstyle tb actitlerow "Romans");title text style
(vla-settextstyle tb acdatarow "Standard");data rows text style
(vla-settextheight tb actitlerow 0.27);title text height = 0.27
(vla-settextheight tb acdatarow 0.21);other cells text height = 0.21
(vla-setalignment tb actitlerow acmiddlecenter);title alignment
(vla-setalignment tb acdatarow acmiddleleft);data cell alignment
(vla-settext tb 0 0 "STUBS");title text
(setq count 1)
(while (< count row)
(vla-setrowheight tb count 0.3875)
(if (=count 1)
(vla-settext tb count 0 strdis)
(vla-settext tb count 0 (strcat "= A2*" (itoa count)))
)
(setq count (1+ count)))
(alert (vl-princ-to-string (vla-getcellformat tb (1- count) 0)))
(vla-put-RegenerateTableSuppressed tb :vlax-false)
(setvar "LUPREC" pr)
(princ)
);_ end
(vl-load-com)
~'J'~ 嘿,我非常感谢你的帮助。我有一个关于修改这个代码的问题。它仍然是十进制的,是否需要放入vla setdatatype函数以使所有行具有体系结构并将当前精度设置为1/16?任何帮助都将不胜感激!!! 好吧,我都弄明白了。所以现在我唯一的问题是把它插入到正确的dimscale 尝试编辑的版本
(defun C:STUBS (/ col count dis dmz lpc lup pt row strdis tb va vm vo)
(setq pt (vlax-3d-point (getpoint "\nPick Insertion Point: ")))
(setq vo (vlax-get-acad-object))
(setq va (vla-get-activedocument vo))
(setq vm (vla-get-modelspace va))
(setq row 16)
(setq col 1)
(setq dis (getdist "\nWhat Is The First Stub Dimension? : "))
(setq lup (getvar "lunits"))
(setvar "lunits" 4) ; architectural units
(setq lpc (getvar "luprec"))
(setvar "luprec" 4) ;precision 1/16"
(setq dmz (getvar "dimzin"))
(setvar "dimzin" 1) ;includes both feet and inches for primary unit
(setq strdis (rtos dis 4 3))
(setq tb (vla-addtable vm pt row col 1 1))
(vla-put-titlesuppressed tb :vlax-false)
(vla-put-headersuppressed tb :vlax-true)
(vla-put-RegenerateTableSuppressed tb :vlax-true)
(vla-put-vertcellmargin tb 0.1)
(vla-put-horzcellmargin tb 0.25)
(vla-setrowheight tb 0 0.4825)
(vla-setcolumnwidth tb 0 2.725)
(vla-settextstyle tb actitlerow "Romans") ;title text style
(vla-settextstyle tb acdatarow "Standard") ;data rows text style
(vla-settextheight tb actitlerow 0.27) ;title text height = 0.27
(vla-settextheight tb acdatarow 0.21) ;other cells text height = 0.21
(vla-setalignment tb actitlerow acmiddlecenter) ;title alignment
(vla-setalignment tb acdatarow acmiddleleft) ;data cell alignment
(vla-settext tb 0 0 "STUBS") ;title text
(setq count 1)
(while (< count row)
(vla-setrowheight tb count 0.3875)
(if (= count 1)
(progn
(vla-settext tb count 0 strdis)
(vla-setcellformat tb count 0 "%lu4%pr4"));lu4 - format in architectural units, pr4 - precision is 1/16"
(progn
(vla-settext tb count 0 (strcat "= A2*" (itoa count)));lu4 - format in architectural units, pr4 - precision is 1/16"
(vla-setcellformat tb count 0 "%lu4%pr4")
)
)
(setq count (1+ count))
)
(vla-put-RegenerateTableSuppressed tb :vlax-false)
(setvar "luprec" lpc)
(setvar "lunits" lup)
(setvar "dimzin" dmz)
(princ)
) ;_ end
(vl-load-com)
忘记了,请分享你的解决方案
与社区
~'J'~
页:
[1]