尘缘一生 发表于 2024-11-25 08:06:40

SLdesign ( 三领设计) V3.0的填充岁月

本帖最后由 尘缘一生 于 2024-11-25 11:53 编辑

一:首先CAD原始填充



如果直接用CAD的,无意麻烦多多,主要是慢,需要人为干预过多。

二:开始三领做了一个SLD填充
先做了各自SLD,然后整合到一个slb库



结果如下:

问题来了:这个是死的,不能任意的扩展。
三:后来为了能自由扩展,作了PAT文件自由增删
实现办法:做一个存PAT文件的目录,里面可以自由增加,
当点击这个填充时候,把此文件拷贝到支持路径的第二个,即可填充有效,
后续继续工作-->如图所示

问题又来了:这个玩意不显示图,谁能明了啥图案呢?
四:考虑到LISP图库,不是可以自由扩展,还可以显示吗?试了试,成功
实现方法:图库作一个填充,点击插入,程序提取其填充定义,生成*.PAT
把它拷贝支持路径,-->后续继续工作
提取填充定义函数
;;提取填充图案数据-----(一级)------
;;来源,明经 MODIFY BY SLdesign(三领)QQ:15290049
;;nam Hatch Enametscale 公制转换的系数
(defun mkpatdata (namtscale / 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))
    (setqn (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".

wangsr 发表于 2024-11-25 08:21:55

谢谢分享。。

moranyuyan 发表于 2024-11-25 09:00:28

谢谢分享,不知能不能独立使用这个插件

尘缘一生 发表于 2024-11-25 09:21:47

moranyuyan 发表于 2024-11-25 09:00
谢谢分享,不知能不能独立使用这个插件

这部分作为公共资源,基本都不加密的,三领基本上免费了,由于集成问题,可能哪里加密点遗漏。

XPG 发表于 2024-11-25 09:32:22

感谢分享。

tranque 发表于 2024-11-25 09:45:43

感谢分享,尘总666

lingduwx 发表于 2024-11-25 11:08:39

还有制作填充,参数填充

cghdy 发表于 2024-11-25 14:28:03

填充有个比列问题,在不同版本的CAD上还不一致,不知道有没有解决好。

gf123 发表于 2024-11-25 15:07:53

感谢分享。。。
页: [1]
查看完整版本: SLdesign ( 三领设计) V3.0的填充岁月