ziele_o2k 发表于 2022-7-5 15:43:24

获取块插入的问题

你好
 
我正在编写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)
)

Roy_043 发表于 2022-7-5 16:02:56

您是否尝试过将\u ent\u bpt变量从OCS转换为当前UCS?

ziele_o2k 发表于 2022-7-5 16:09:18

是的,我确实试过这个:
(setq   _ent_bpt (trans (cdr (assoc 10 _enx)) @ent 1))

ziele_o2k 发表于 2022-7-5 16:19:00

一些屏幕截图显示了窗口在有问题的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)

ziele_o2k 发表于 2022-7-5 16:27:42

解决方案是:
(setq _ent_bpt (trans (cdr (assoc 10 _enx)) @ent 2))

maratovich 发表于 2022-7-5 16:41:13

ziele_o2k
检查问题文件中的值目标
 
在命令行“_view”上,它显示了什么?

BIGAL 发表于 2022-7-5 16:52:01

这是一个在模型空间中绘制所有标题栏的版本。检查标题栏的旋转和修改窗口参数不需要太多时间,为什么UCS OB PLAN不使用视图呢?
 
查看布局并在多视图中进行旋转不是更好吗?
在模型中打印标题。lsp
页: [1]
查看完整版本: 获取块插入的问题