请教高手:自定义填充怎么用
haoshunju
haoshunju Lv.3
2005年01月02日 09:13:54
只看楼主

请教高手:自定义填充怎么用。

请教高手:自定义填充怎么用。
免费打赏
wangziquan007
2005年01月23日 17:39:40
2楼
我先声明,这是陈伯雄先生的书稿,是不是对你有帮助就看你的天资了,因为里面的附图我没有找到。

§13.9 自定义填充图案库
13.9.1填充图案库文件的格式
对于我国的用户,应当将自定义填充图案加入库文件 acadiso.pat 或单独保存在一个PAT文件中。将图案单独保存时,文件名必须与图案名相同。例如,名为ABC的图案必须保存在文件 abc.pat 中。
这是 BHATCH 和 HATCH命令中要使用的一个支持文件,它描述的是若干种预置的填充图案,公制的图形单位绘图中将自动使用:ACADISO.PAT,每个图案定义的第一行是它的标题行:

* 图案名 [,说明文字]

说明文字是在 HATCH-? 时在清单中出现的说明文字,也可不写,而图案名应是唯一的,不可重复,以下行是画线的描述:

线斜角,原点X,Y 相邻单元沿线斜角方向的X增量,Y增量,线长度编辑

注意:
1〉每行描述不大于80字符,
2〉线长度编辑描述(与线型定义的描述相同)中不多于六个片段。
3〉所有的参数描述都是以线条的延伸方向为X轴进行的。


13.9.2 生成自定义填充图案库
填充图案的基础是若干条有确定位置关系的线束,因此不能精确生成弧线的填充图案。对于交叉线的图案,每一个方向线都应当有一个独立的画线参数描述行。
如果从精确绘制的底图线上取出尺寸将会有较好的参数精度。就可以保证在较大面积的图案填充之后,右上角附近的图案仍然正确。而且这也是CAGD功能的又一个实际用途。例如图13-9-1,是为设计填充图案而精确绘制的1:1的底图,先生成一个单元,再用 Copy 或 Array 生成相邻的单元。并且移动整套图线,使A点在0,0处。之后再用 ID 和Dist命令提取有关数据。
图13-9-1 填充图案设计

▼有关A线方向的参数:
原点从 0,0起,线斜角:90°
从图中测量,线长度方向的编辑值:划线长 = 11.547 空移长 = 5.7735
从图中测量,相邻单元以WCS-Y方向为X轴的位移量:X= 8.6603 Y=5
即:90, 0,0, 8.6603,5, 11.547,-5.7735

▼有关B线方向线的参数:
原点从 5,2.8868 起,线斜角:30°
线长度方向的偏移量:划线长 = 11.547 空移长 = 5.7735
相邻单元以WCS-30度方向为X轴的位移量:x = 8.6603 y = 5

▼有关C线方向线的参数:
原点从 –2.5,-1.4434 起,线斜角:90°
线长度方向的偏移量:划线长 = 5.7735,空移长 = 11.547
相邻单元以WCS-Y方向为X轴的位移量:x = 8.6603 y = 5

▼有关D线方向线的参数:
原点从 5,2.8868 起,线斜角:120°
线长度方向的偏移量:划线长 = 11.547,空移长 = 5.7735
相邻单元以WCS-120度方向为X轴的位移量:x = 8.6603 y = -5


  结果如下:
*User2000,连续方盒子
90, 0,0, 8.6603,5, 11.547,-5.7735
30, 5,2.8868, 8.6603,5, 11.547,-5.7735
90, -2.5,-1.4434, 8.6603,5, 5.7735,-11.547
150, 5,2.8868, 8.6603,5, 11.547,-5.7735

对于那些只有用三角函数之类的运算才能确定描述参数的图案,在相当多的单元重复之后才能填满指定区间的情况下,填充区左上角的图案有可能出现各条线之间位置的累积误差,这是由于图案描述尺寸误差造成的。因此,在所有斜线的描述中,尽可能精确,用较多位数的小数来描述,这样的需求,用AutoCAD的CAGD功能能够达到最好的精度。关于线长度方向的编辑描述,与线型定义的规则相同。

注意:
最好不使用VLISP IDE进行PAT文件的编写,因为没有换行符号显示功能,而PAT文件对于格式比较敏感。建议使用DANA软件(附加光盘上有)。

13.9.3 使用自定义填充图案库
这样自定义的图案,可以添加到ACADISO.PAT中。
也可以将图案单独保存,要求每一个用户的PAT文件中只描述一个填充图案(注意,这样的PAT文件名必须与图案的名称相同)。
AutoCAD将会立即使用它,不需要经过形文件或菜单文件那样的编译。图案在 BHatch 命令的对话框当中,能自动出现图案和名称供用户选择。
图13-9-2 自定义填充图案在各种使用中的提示实例

在Hatch 命令的交互中引用User2000图案的操作实例如下:
命令: hatch
输入图案名或 [?/实体(S)/用户定义(U)] <ANGLE>: User2000
图案比例 <1.0000>:
图案角度 <0>:
选择填充边界,或按 ENTER 选择直接填充选项,
选择对象: 已找到 1 个
选择对象:

如果自定义图案库产生错误,修改之后再次存盘,会由于 AutoCAD 的文件自动锁定功能,新的定义可能不会被使用,这时退出 ACAD 之后再次启动即可。填充结果参见图13-9-3
图13-9-3 自定义图案填充实例
回复
wangziquan007
2005年01月23日 17:41:11
3楼
还是我,接着下一篇,同样的话不再说了

13.9.4 特殊填充图案的处理
1.关于非直线束填充的问题
由于PAT文件功能的限制,只能描述用“多组平行直线束”生成的图案。但实际绘图中还有许多填充图案的要求是PAT文件数据结构不能满足的,例如:木纹…
下面讨论的解决方案上已经远离了PAT文件和Hatch命令,但是使用的结果也是要完成图案填充的动作。这是借用了外部参照功能完成的:
1) 绘制木纹的图形(参见图13-9-4),存成确定名的文件。
图13-9-4 木纹原始图形——MW.DWG

2) 生成零件轮廓,用封闭多段线绘制。
3) 借用下面的模拟程序完成图案填充(T1094.LSP):

(Defun C:HAT ()
(Defun ArcToL (aen)
(SetQ ael (EntGet aen)
ace (Cdr (Assoc 10 ael))
are (Cdr (Assoc 40 ael))
aps (Polar ace (Cdr (Assoc 50 ael)) are)
ape (Polar ace (Cdr (Assoc 51 ael)) are)
amd (/ are 10)
)
(Command "color" 111 "measure" (List aen aps) amd)
(EntDel aen)
(SetQ ass (SSGet "x" ’((62 . 111)(0 . "POINT")))
apn 0
)
(Command "pline" ape)
(Repeat (SSLength ass)
(SetQ apa (SSName ass apn))
(Command (Cdr (Assoc 10 (EntGet apa))))
(SetQ apn (1+ apn))
)
(Command aps "" "erase" ass "")
)
(SetVar "filedia" 0)(SetVar "cmdecho" 0)
(SetVar "pdmode" 1)(SetVar "osmode" 0)
(SetQ plen (Car (EntSel "\n多段线边界框:"))
coln (GetVar "cecolor")
)
(Command "copy" plen "" ’(0 0) "@"
"change" plen "" "p" "c" 111 ""
"explode" plen
)
(SetQ plss (SSGet "x" ’((62 . 111)))
plnn 0
)
(Repeat (SSLength plss)
(SetQ plam (SSName plss plnn))
(If (= "ARC" (Cdr (Assoc 0 (EntGet plam))))
(ArcToL plam)
)
(SetQ plnn (1+ plnn))
)
(SetQ lass (SSGet "x" ’((62 . 111)))
entn (SSName lass 0)
)
(Command "pedit" entn "j" lass "" "")
(SetQ en (EntLast))
(SetVar "cecolor" coln)
(Command "-xref" "a" "mw" Pause 1 1 "0"
"xclip" "l" "" "n" "s" en
)
(EntDel en)
(SetVar "filedia" 1)(SetVar "cmdecho" 1)
(PrinC)
)

4) 结果实例参见图13-9-5。








说明:
这个程序的技术依托是AutoCAD的剪裁功能,可是非常遗憾的是外部参照剪裁边界不支持弧片段,而多段线轮廓中带有弧片段绝不是个别需求。好在我们可以编写一个程序来弥补这个不足。这样,就能将包含弧片段的多段线,用较高的逼近精度,生成形状几乎完全相同,全由直线片段组成的多段线,填好图案,最后删除临时边界。

2.关于剖中剖的填充的问题
剖中剖是一种不太常见的需求,但是直接的AutoCAD功能没有提供这种处理方法。对于机械设计的需要,比较简单的方法是自定义两种直线剖面图案:
*UserA,
0, 0,0, 0,1

*UserB,
0, 0,0.5, 0,1

两者都是零度角,1mm间距,只是起点相差为间距的一半。参见图13-9-6

图13-9-6 剖中剖图案填充参考
还有一种方法:在填充剖中剖的图案时,将Snap的原点移动半个剖面线间距。
回复
s622421
2005年01月29日 10:27:03
4楼
看的稀里糊涂的...
回复
haoshunju
2005年02月03日 13:27:18
5楼
谢谢你,
还有一种好一点的方法。我得回学校了再告诉。
我2月18日上课
谢谢你的方法。
我知道一点。忘记了一些
回复
haoshunju
2005年10月15日 21:34:48
6楼
我做的一个规划
请PP
回复

相关推荐

APP内打开