你好
我正在编写lisp,它会将我的绘图(从模型空间)发送到绘图仪。
我的纸张大小是在动态块中设置的,我正在用acWindow打印。
在某些图形(DWG)中,例程选择了不正确的绘图区域。
现在让我们展示一些代码
(我不会展示所有代码,因为你们都无法测试)
- ;; @ent - [ename] of dynamic block to print
- ;;
- (pz:0015_SendEnt2Plotter (@ent / R2D )
- (defun R2D (r) (* 180.0 (/ r pi)))
- (setq
- _enx (entget @ent)
- _zdir (trans '(0 0 1) 1 0 T)
- _xang (R2D(angle '(0 0 0) (trans (getvar "UCSXDIR") 0 _zdir)))
- _ent_rot (R2D(cdr (assoc 50 _enx)))
- _viw_tst (R2D(getvar 'viewtwist))
- )
- ;rotate ucs and plan view to current block
- (cond
- ( (and
- (not (equal _ent_rot (- (if (= _viw_tst 0) 0 360) _viw_tst) 1e-10))
- (not (equal _ent_rot _xang 1e-10))
- )
- (command "._dview" "" "_twist" (* -1 _ent_rot) "")
- (command "._ucs" "_view" "")
- )
- ( (and
- (not (equal _ent_rot (- (if (= _viw_tst 0) 0 360) _viw_tst) 1e-10))
- (equal _ent_rot _xang 1e-10)
- )
- (command "._dview" "" "_twist" (* -1 _ent_rot) "")
- )
- ( (and
- (equal _ent_rot (- (if (= _viw_tst 0) 0 360) _viw_tst) 1e-10)
- (not (equal _ent_rot _xang 1e-10))
- )
- (command "._ucs" "_view" "")
- )
- ( t nil )
- )
- (setq
- ;; ============================================== ;;
- ;; ===================PROBLEM==================== ;;
- ;; ============================================== ;;
- _ent_bpt (cdr (assoc 10 _enx))
- ;; ============================================== ;;
- ;; ============================================== ;;
- ;; ============================================== ;;
- _ent_hgt (pz:getdynpropvalue @ent "H")
- _ent_lnt (pz:getdynpropvalue @ent "L")
- )
- (pz:0015_Print _ent_bpt _ent_hgt _ent_lnt)
- )
我打印程序的一部分。
- ;; @bp - [list] lower left point of window to plot
- ;; @h - [real] paper height
- ;; @l - [real] paper length
- (pz:0015_Print (@bp @h @l)
- (setq
- _ll (vlax-make-safearray vlax-vbDouble '(0 . 1))
- _ur (vlax-make-safearray vlax-vbDouble '(0 . 1))
- )
- ;; ============================================== ;;
- ;; ===================PROBLEM==================== ;;
- ;; ============================================== ;;
- (vlax-safearray-put-element _ll 0 (car @bp))
- (vlax-safearray-put-element _ll 1 (cadr @bp))
- (vlax-safearray-put-element _ur 0 (+ (car @bp) @l))
- (vlax-safearray-put-element _ur 1 (+ (cadr @bp) @h))
- ;; ============================================== ;;
- ;; ============================================== ;;
- ;; ============================================== ;;
- (vla-SetWindowToPlot _act_lay _ll _ur)
- (vla-Put-PlotType _act_lay acWindow)
- )
|