我继续把这些放在一起,看看可能需要什么。没有错误检查,不好看,但试着看看这是否是一个开始。10.0的强调偏移是硬编码的。
- (defun c:test (/ frm xnum ynum xspace yspace xpane ypane pane pane2 ptc pt1 pt2 pt3 pt4 ptp1 ptp2 ptp3 ptp4)
- (setvar "CMDECHO" 0)
- (initget 7)
- (setq frm (getreal "\nEnter Frame Offset: "))
- (initget 7)
- (setq xnum (getint "\nEnter Number for Columns of Panes: "))
- (initget 7)
- (setq xspace (getreal "\nEnter Column Space Distance: "))
- (initget 7)
- (setq ynum (getint "\nEnter Number for Rows of Panes: "))
- (initget 7)
- (setq yspace (getreal "\nEnter Row Space Distance: "))
- (setq pt1 (getpoint "\nSelect Lower Left Window Corner: ")
- pt3 (getpoint "\nSelect Upper Right Window Corner: ")
- pt2 (list (car pt3)(cadr pt1))
- pt4 (list (car pt1)(cadr pt3))
- ptc (mapcar '(lambda (q p) (/ (+ q p) 2.0)) pt1 pt3)
- xlen (- (distance pt1 pt2) (* 2 frm))
- ylen (- (distance pt1 pt4) (* 2 frm))
- xpane (/ (- xlen (* (1- xnum) xspace)) xnum)
- ypane (/ (- ylen (* (1- ynum) yspace)) ynum)
- ptp1 (list (+ (car pt1) frm)(+ (cadr pt1) frm))
- ptp2 (list (+ (car ptp1) xpane)(cadr ptp1))
- ptp3 (list (+ (car ptp1) xpane)(+ (cadr ptp1) ypane))
- ptp4 (list (car ptp1)(+ (cadr ptp1) ypane))
- )
- (entmakex (append (list (cons 0 "LWPOLYLINE")
- (cons 100 "AcDbEntity")
- (cons 100 "AcDbPolyline")
- (cons 90 4)
- (cons 70 1)
- (cons 10 ptp1)
- (cons 10 ptp2)
- (cons 10 ptp3)
- (cons 10 ptp4))))
- (setq pane (entlast))
- (setq ptc (mapcar '(lambda (q p) (/ (+ q p) 2.0)) ptp1 ptp2))
- (command "_offset" "10.0" pane "_non" ptc "") ;; Hardcoded "10.0" offset for trim
- (setq pane2 (entlast))
- (cond
- ((AND (= ynum 1)(= xnum 1)) T)
- ((= ynum 1) (command "-array" pane pane2 "" "R" ynum xnum (+ xpane xspace)))
- ((= xnum 1) (command "-array" pane pane2 "" "R" ynum xnum (+ ypane yspace)))
- ((OR (> ynum 1)(> xnum 1)) (command "-array" pane pane2 "" "R" ynum xnum (+ ypane yspace) (+ xpane xspace)))
- (t nil)
- )
- (princ)
- )
|