本帖最后由 cabinsummer 于 2016-12-24 15:06 编辑
文字库功能
图形库功能
智能交互标号
近期在开发明细表程序,为了与公司原有的程序兼容,增加了不少难度。这个过程中也学到不少东西,感谢Chen QJ一直以来的大力支持。现在将思路奉献出来,供大家提些建议。
程序开发要满足人操作的方便性,这个是最主要的。因此程序必须有库并且具有导向性,让新人能很快适应。
明细表由“序号”、“代号”、“名称”、和“备注”几项构成。在实际生产过程中,图纸存在大量的复用,这样带来的工艺流程也完全不一样,因此不能简单的将分为加工件和采购件两类。我根据实际情况,将明细分为:
明细表必须对此做出区分,以方便后期人员的操作。分类是个麻烦的事,无论交给设计人员还是交给物料管理人员。尤其是当大量写入表格时总难免不了出错。因此要有常用的文字库便于选择,有常用的图形库且能从中提取信息直接提供给明细表。
仿公司国外的习惯,引出的标号如下图:
说明一下,圆圈类的都是要出图的;分叉上线是双线的表明此号为部件,有下级装配图和明细;单线是配图的;分叉单线是采购用的,根据集团内部组织方式,填写略有区别。程序采用属性块加扩展数据。
由此,定义操作的数据结构,先定义构成数据结构的几个基本函数 - ;;;属性块
- (defun BOM_BLOCK (BlockName)
- (entmake (list '(0 . "BLOCK")'(10 0.0 0.0 0.0)'(70 . 2)(cons 2 BlockName)))
- )
- ;;;圆
- (defun BOM_CIRCLE (CenterPoint Radius)
- (entmake (list '(0 . "CIRCLE")'(100 . "AcDbEntity")'(8 . "0")'(100 . "AcDbCircle")(cons 10 Centerpoint)(cons 40 Radius)))
- )
- ;;;直线
- (defun BOM_LINE (StartPoint EndPoint)
- (entmake (list '(0 . "LINE")'(100 . "AcDbEntity")'(8 . "0")'(100 . "AcDbLine")(cons 10 StartPoint)(cons 11 EndPoint)))
- )
- ;;;属性定义
- (defun BOM_ATTDEF (Height Value Width TextStyle Horizontal AlignPoint Pmpt Tag Visibility Vertical)
- (entmake
- (list
- '(0 . "ATTDEF")
- '(100 . "AcDbEntity")
- '(8 . "TEXT")
- '(100 . "AcDbText")
- '(10 0.0 0.0 0.0)
- (cons 40 Height)
- (cons 1 Value)
- (cons 41 Width)
- (cons 7 TextStyle)
- (cons 72 Horizontal)
- (cons 11 AlignPoint)
- '(100 . "AcDbAttributeDefinition")
- (cons 3 Pmpt)
- (cons 2 Tag)
- (cons 70 Visibility)
- (cons 74 Vertical)
- )
- )
- )
- ;;;小圆点引线
- (defun BOM_LEADER (StartPoint Endpoint AssocBlock)
- (entmake
- (list
- '(0 . "LEADER")
- '(100 . "AcDbEntity")
- '(8 . "DIM")
- '(100 . "AcDbLeader")
- '(71 . 1)
- '(73 . 2)
- '(74 . 0)
- '(76 . 2)
- (cons 10 StartPoint)
- (cons 10 Endpoint)
- (cons 340 AssocBlock)
- (list -3
- (list "ACAD"
- (cons 1000 "DSTYLE")
- (cons 1002 "{")
- (cons 1070 341)
- (cons 1005 (cdr (assoc 5 (entget (cdr (assoc 330 (entget (tblobjname "block" "_dotsmall"))))))))
- (cons 1002 "}")
- )
- )
- )
- )
- )
- ;;;块属性
- (defun BOM_ATTRIB (Height Value Width TextStyle Horizontal AlignPoint Tag Visibility Vertical)
- (entmake
- (list
- '(0 . "ATTRIB")
- '(100 . "AcDbEntity")
- '(8 . "TEXT_ENGLISH")
- '(100 . "AcDbText")
- '(10 0.0 0.0 0.0)
- (cons 40 (* Height scl))
- (cons 1 Value)
- (cons 41 Width)
- (cons 7 TextStyle)
- (cons 72 Horizontal)
- (cons 11 AlignPoint)
- '(100 . "AcDbAttribute")
- (cons 2 Tag)
- (cons 70 Visibility)
- (cons 74 Vertical)
- )
- )
- )
标号有左右方向,为防止镜像后文字难以识别,特定义八种属性块
未完待续…… |