本帖最后由 尘缘一生 于 2024-11-25 11:53 编辑
一:首先CAD原始填充
如果直接用CAD的,无意麻烦多多,主要是慢,需要人为干预过多。
二:开始三领做了一个SLD填充
先做了各自SLD,然后整合到一个slb库
结果如下:
问题来了:这个是死的,不能任意的扩展。
三:后来为了能自由扩展,作了PAT文件自由增删
实现办法:做一个存PAT文件的目录,里面可以自由增加,
当点击这个填充时候,把此文件拷贝到支持路径的第二个,即可填充有效,
后续继续工作-->如图所示
问题又来了:这个玩意不显示图,谁能明了啥图案呢?
四:考虑到LISP图库,不是可以自由扩展,还可以显示吗?试了试,成功
实现方法:图库作一个填充,点击插入,程序提取其填充定义,生成*.PAT
把它拷贝支持路径,-->后续继续工作
提取填充定义函数
- ;;提取填充图案数据-----(一级)------
- ;;来源,明经 MODIFY BY SLdesign(三领) QQ:15290049
- ;;nam Hatch Ename tscale 公制转换的系数
- (defun mkpatdata (nam tscale / hpname obj scale rot enl newpatdata ang x y dx dy data n l k strdata basex basey)
- ;坐标绕Z轴顺时针旋转角度
- (defun rotz (ang x y / an)
- (setq an (- ang))
- (mapcar '(lambda (r) (apply '+ (mapcar '* r (list x y))))
- (list (list (cos an) (- (sin an)))
- (list (sin an) (cos an))
- )
- )
- )
- ;;------------------
- (setq hpname (dxf1 nam 2)) ;图案名称
- (setq
- enl (entget nam)
- enl (member (assoc 53 enl) enl)
- obj (en2obj nam)
- scale (vla-get-PatternScale obj) ;填充比例
- rot (vla-get-PatternAngle obj) ;填充角度
- )
- (setq newpatdata
- (list
- (strcat "*" (strcase hpname))
- (strcat "*" hpname (slmsg ",三领图案提取生成" ",烩瓜矗ネΘ" ",SLdesign pattern extraction and generation") hpname)
- )
- ) ;_ 储存填充数据表
- (while (= 53 (caar enl))
- (setq
- ang (cdar enl) ;53 图案直线角度
- enl (cdr enl)
- )
- (setq
- x (dxf1 enl 43) ;图案直线基点,X 分量
- y (dxf1 enl 44) ;图案直线基点,Y 分量
- dx (dxf1 enl 45) ;图案直线偏移,X 分量
- dy (dxf1 enl 46) ;图案直线偏移,Y 分量
- )
- (if (null basex) (setq basex x basey y))
- (setq x (- x basex) y (- y basey)) ;以第一条填充线为图案定义原点
- (mapcar 'set (list 'dx 'dy) (rotz ang dx dy))
- (mapcar 'set (list 'x 'y) (rotz rot x y))
- (setq data (list x y dx dy))
- (setq enl (member (assoc 79 enl) enl))
- (setq n (cdar enl) ;虚线长度项目数
- enl (cdr enl)
- )
- (repeat n
- (setq l (car enl) ;虚线长度
- enl (cdr enl)
- )
- (setq data (append data (list (cdr l))))
- )
- (setq k 12) ;_ 数字取位精度
- ;;图案定义最长不超过80个字符
- (while (> (strlen (setq strdata
- (apply
- 'strcat
- (cons
- (rtos (sl-r2d (- ang rot)) 2 k)
- (mapcar '(lambda (a) (strcat "," (rtos (* tscale (/ a scale)) 2 k))) data)
- )
- )
- )
- )
- 80
- )
- (setq k (1- k))
- )
- (setq newpatdata (append newpatdata (list strdata)))
- )
- newpatdata
- )
下面是图库作的填充的效果:
素材:
程序(阉割版,微修即是图库)
如此:既明了,又可以自由扩展了。唯一不满意之处的话,那就是,需要插入,虽然过程肉眼看不到。
填充是设计人员无法逃避的,三领将继续深思,各位还有更好的办法吗?只需原理告知即可。
五:对于SLB,*pat文件自动显示缩略图,或SLD吧,程序没有,至少LISP没有,本坛亦没有,很是遗憾,否则,就彻底完美了。何须如此费劲。
所以我给桌子公司起个外号:“2BCAD".
|