获取块插入的问题
你好我正在编写lisp,它会将我的绘图(从模型空间)发送到绘图仪。
我的纸张大小是在动态块中设置的,我正在用acWindow打印。
在某些图形(DWG)中,例程选择了不正确的绘图区域。
现在让我们展示一些代码
(我不会展示所有代码,因为你们都无法测试)
;; @ent - 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- lower left point of window to plot
;; @h - paper height
;; @l - 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)
) 您是否尝试过将\u ent\u bpt变量从OCS转换为当前UCS? 是的,我确实试过这个:
(setq _ent_bpt (trans (cdr (assoc 10 _enx)) @ent 1)) 一些屏幕截图显示了窗口在有问题的dwg中绘制区域的情况。
blk1在wcs中,blk2旋转
(setq _ent\u bpt(trans(cdr(assoc 10 _enx))@ent 1))
(setq _ent\u bpt(trans(cdr(assoc 10 _enx))@ent 1))
(setq _ent\u bpt(trans(cdr(assoc 10 _enx))@ent 0)
解决方案是:
(setq _ent_bpt (trans (cdr (assoc 10 _enx)) @ent 2)) ziele_o2k
检查问题文件中的值目标
在命令行“_view”上,它显示了什么? 这是一个在模型空间中绘制所有标题栏的版本。检查标题栏的旋转和修改窗口参数不需要太多时间,为什么UCS OB PLAN不使用视图呢?
查看布局并在多视图中进行旋转不是更好吗?
在模型中打印标题。lsp
页:
[1]