为什么不在创建实体的过程中创建实体并插入孔,然后使用lisp制作3个对象的块?你为什么要分两步做呢?在创建过程中,只需使用elev函数来堆叠实体。如果这3个实体的倍数大小不同,则可以更快地查看动态块。
- Ask a b c
- length height
- e d
- length height
- make 3 solids save block1
- subtract plug
- make plug 3 solids save block2
这需要重复2x3实体的功能等,只是一个开始。非常粗糙的应该使用defuns,然后可以堆叠尽可能多或尽可能少等。注意创建2个块,因此可能需要插入才能看到结果。
- (defun c:test ( / pt1 pt2 pt3 l h e d l1 h2 ent1 ent2 ent3 ent21 ent22 ent23)
- (setq a 100 b 120 c 200)
- (setq pt1 (getpoint "point"))
- (setq L (getdist pt1 "length"))
- (setq h (getdist pt1 "Height"))
- (setq e (getdist pt1 "Offset e"))
- (setq d (getdist pt1 "Offset d"))
- (setq L2 (getreal "Length 2"))
- (setq h2 (getreal "Height 2"))
- (command "rectang" pt1 (list (+ (car pt1) L) (+ (cadr pt1 ) h)))
- (command "zoom" "e")
- (command "extrude" "l" "" a)
- (setq ent1 (entlast))
- (setq pt2 (list (+ (car pt1) e) (+ (cadr pt1 )d) ))
- (setq pt3 (list (+ (car pt2) l2) (+ (cadr pt2 ) h2) ))
- (command "rectang" pt2 pt3)
- (command "extrude" "l" "" a)
- (setq ent12 (entlast))
- (command "subtract" ent1 "" ent12 "")
- ; 2nd layer
- (setq pt1 (list (car pt1)(cadr pt1) a))
- (command "rectang" pt1 (list (+ (car pt1) L) (+ (cadr pt1) h) a))
- (command "extrude" "l" "" b)
- (setq ent2 (entlast))
- (setq pt2 (list (+ (car pt1) e) (+ (cadr pt1 )d) a))
- (setq pt3 (list (+ (car pt2) l2) (+ (cadr pt2 ) h2) a))
- (command "rectang" pt2 pt3)
- (command "extrude" "l" "" b)
- (setq ent22 (entlast))
- (command "subtract" ent2 "" ent22 "")
- ; 3rd layer
- (setq pt1 (list (car pt1)(cadr pt1) (+ a b)))
- (command "rectang" pt1 (list (+ (car pt1) L) (+ (cadr pt1) h) (+ a b)))
- (command "extrude" "l" "" c)
- (setq ent3 (entlast))
- (setq pt2 (list (+ (car pt1) e) (+ (cadr pt1 )d) (+ a b)))
- (setq pt3 (list (+ (car pt2) l2) (+ (cadr pt2 ) h2) (+ a b)))
- (command "rectang" pt2 pt3)
- (command "extrude" "l" "" c)
- (setq ent32(entlast))
- (command "subtract" ent3 "" ent32 "")
- ; block part
- (command "-block" "BIGAL" (list (car pt1)(cadr pt1) 0.0) ent1 ent2 ent3 "")
- ; now create plugs
- ; like above 3 times
- ; put pt1 back to z=0
- (setq pt1 (list (car pt1)(cadr pt1) 0.0))
- (setq pt2 (list (+ (car pt1) e) (+ (cadr pt1 )d) ))
- (setq pt3 (list (+ (car pt2) l2) (+ (cadr pt2 ) h2)))
- (command "rectang" pt2 pt3)
- (command "extrude" "l" "" a)
- (setq ent21 (entlast))
- (setq pt2 (list (+ (car pt1) e) (+ (cadr pt1 )d) a))
- (setq pt3 (list (+ (car pt2) l2) (+ (cadr pt2 ) h2) a))
- (command "rectang" pt2 pt3)
- (command "extrude" "l" "" b)
- (setq ent22 (entlast))
- (setq pt2 (list (+ (car pt1) e) (+ (cadr pt1 )d) (+ a b)))
- (setq pt3 (list (+ (car pt2) l2) (+ (cadr pt2 ) h2) (+ a b)))
- (command "rectang" pt2 pt3)
- (command "extrude" "l" "" c)
- (setq ent23 (entlast))
- (command "-block" "BIGAL2" (list (car pt1)(cadr pt1) 0.0) ent21 ent22 ent23 "")
- (command "Insert" "bigal" pt1 1 1 0)
- )
- (c:test)
|