kucha007 发表于 2025-3-20 15:47:47

【K:CreateTabSty】创建表格样式并置为当前


根据这篇贴子的资料就行了调整:https://hyperpics.blogs.com/beyond_the_ui/2012/07/creating-a-table-style-with-autolisp-and-the-activex-api.html

(defun K:CreateTabSty (StyNam MaxTxt MinTxt Margin / dictObj TabSty)
    ;; 获取 Dictionary 集合和 TableStyle 字典
    (setq dictObj (vla-Item (vla-get-Dictionaries (vla-get-activedocument (vlax-get-acad-object))) "acad_tablestyle"))
    (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-item (list dictObj StyNam)))
      (progn
            ;创建自定义表格
            ;(setq StyNam "WorkTools")
            (setq TabSty (vla-AddObject dictObj StyNam "AcDbTableStyle"))

            ;样式名称和注释
            (vla-put-Name TabSty StyNam)
            (vla-put-Description TabSty "用于统计数据")

            ;设置样式的位标志值
            (vla-put-BitFlags TabSty 1)

            ;设置表格的方向,从上到下或从下到上
            (vla-put-FlowDirection TabSty acTableTopToBottom)

            ;; Sets the supression of the table header
            (vla-put-HeaderSuppressed TabSty :vlax-false)
            ;; Sets the supression of the table title
            (vla-put-TitleSuppressed TabSty :vlax-false)
            
            ;水平边距+垂直边距
            (vla-put-HorzCellMargin TabSty Margin)
            (vla-put-VertCellMargin TabSty Margin)

            ;文字居中对齐
            (vla-SetAlignment TabSty (+ acDataRow acTitleRow) acMiddleCenter)
            (vla-SetAlignment TabSty acHeaderRow acMiddleCenter)

            ;|设置标题行和表头行的背景颜色
                (setq colObj (vlax-create-object (strcat "AutoCAD.AcCmColor." (substr (getvar "ACADVER") 1 2))))
                (vla-SetRGB colObj 98 136 213)
                (vla-SetBackgroundColor TabSty (+ acHeaderRow acTitleRow) colObj)
                ;; Release the color object
                (vlax-release-object colObj)
            |;

            ;清除数据行的背景颜色
            (vla-SetBackgroundColorNone TabSty acDataRow :vlax-true)
            ;|
                ;设置标题行底部网格颜色
                (vla-SetRGB colObj 0 0 255)
                (vla-SetGridColor TabSty acHorzBottom acTitleRow colObj)
               
                ;设置标题行的底部网格线线宽
                (vla-SetGridLineWeight TabSty acHorzBottom acTitleRow acLnWt025)
            |;
            ;为数据行和标题行设置可见的网格水平线
            (vla-SetGridVisibility TabSty acHorzInside(+ acHeaderRow acDataRow) :vlax-true)
            ;设置文本样式
            (vla-SetTextStyle TabSty (+ acDataRow acHeaderRow acTitleRow) "Standard")
            ;设置标题、表头和数据行的文本高度
            (vla-SetTextHeight TabSty acTitleRow MaxTxt)
            (vla-SetTextHeight TabSty (+ acDataRow acHeaderRow) MinTxt)
            (setvar 'ctablestyle StyNam)
      )
      (setvar 'ctablestyle StyNam)
    )
    (princ)
)



用法:

(K:CreateTabSty "WorkTools" 5.0 4.0 0.0)

panliang9 发表于 2025-3-24 08:49:07

谢谢楼主分享!

技术工作室 发表于 2025-3-28 06:57:21

谢谢楼主分享!
页: [1]
查看完整版本: 【K:CreateTabSty】创建表格样式并置为当前