乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 64|回复: 6

[编程交流] 获取块插入的问题

[复制链接]

46

主题

161

帖子

104

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
242
发表于 2022-7-5 15:43:24 | 显示全部楼层 |阅读模式
你好
 
我正在编写lisp,它会将我的绘图(从模型空间)发送到绘图仪。
我的纸张大小是在动态块中设置的,我正在用acWindow打印。
在某些图形(DWG)中,例程选择了不正确的绘图区域。
 
现在让我们展示一些代码
(我不会展示所有代码,因为你们都无法测试)
  1. ;; @ent - [ename] of dynamic block to print
  2. ;;
  3. (pz:0015_SendEnt2Plotter (@ent / R2D )
  4. (defun R2D (r) (* 180.0 (/ r pi)))
  5. (setq
  6.    _enx     (entget @ent)
  7.    _zdir    (trans '(0 0 1) 1 0 T)
  8.    _xang    (R2D(angle '(0 0 0) (trans (getvar "UCSXDIR") 0 _zdir)))
  9.    _ent_rot (R2D(cdr (assoc 50  _enx)))
  10.    _viw_tst (R2D(getvar 'viewtwist))
  11. )
  12. ;rotate ucs and plan view to current block
  13. (cond
  14.    ( (and
  15.        (not (equal _ent_rot (- (if (= _viw_tst 0) 0 360) _viw_tst) 1e-10))
  16.        (not (equal _ent_rot    _xang         1e-10))
  17.      )
  18.      (command "._dview" "" "_twist" (* -1 _ent_rot) "")
  19.      (command "._ucs" "_view" "")
  20.    )
  21.    ( (and
  22.        (not (equal _ent_rot (- (if (= _viw_tst 0) 0 360) _viw_tst) 1e-10))
  23.             (equal _ent_rot _xang    1e-10)
  24.      )
  25.      (command "._dview" "" "_twist" (* -1 _ent_rot) "")
  26.    )
  27.    ( (and
  28.             (equal _ent_rot (- (if (= _viw_tst 0) 0 360) _viw_tst) 1e-10)
  29.        (not (equal _ent_rot    _xang         1e-10))
  30.      )
  31.      (command "._ucs" "_view" "")
  32.    )
  33.    ( t nil )
  34. )
  35. (setq   
  36. ;; ============================================== ;;
  37. ;; ===================PROBLEM==================== ;;
  38. ;; ============================================== ;;
  39.    _ent_bpt (cdr (assoc 10 _enx))
  40. ;; ============================================== ;;
  41. ;; ============================================== ;;
  42. ;; ============================================== ;;
  43.    _ent_hgt (pz:getdynpropvalue @ent "H")
  44.    _ent_lnt (pz:getdynpropvalue @ent "L")
  45. )
  46. (pz:0015_Print _ent_bpt _ent_hgt _ent_lnt)
  47. )

我打印程序的一部分。
  1. ;; @bp  - [list] lower left point of window to plot
  2. ;; @h   - [real] paper height
  3. ;; @l   - [real] paper length
  4. (pz:0015_Print (@bp @h @l)
  5. (setq
  6.    _ll (vlax-make-safearray vlax-vbDouble '(0 . 1))
  7.    _ur (vlax-make-safearray vlax-vbDouble '(0 . 1))
  8. )
  9. ;; ============================================== ;;
  10. ;; ===================PROBLEM==================== ;;
  11. ;; ============================================== ;;
  12. (vlax-safearray-put-element _ll 0 (car @bp))
  13. (vlax-safearray-put-element _ll 1 (cadr @bp))
  14. (vlax-safearray-put-element _ur 0 (+ (car @bp)  @l))
  15. (vlax-safearray-put-element _ur 1 (+ (cadr @bp) @h))
  16. ;; ============================================== ;;
  17. ;; ============================================== ;;
  18. ;; ============================================== ;;
  19. (vla-SetWindowToPlot _act_lay _ll _ur)
  20. (vla-Put-PlotType _act_lay acWindow)
  21. )
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 16:02:56 | 显示全部楼层
您是否尝试过将\u ent\u bpt变量从OCS转换为当前UCS?
回复

使用道具 举报

46

主题

161

帖子

104

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
242
发表于 2022-7-5 16:09:18 | 显示全部楼层
是的,我确实试过这个:
  1. (setq   _ent_bpt (trans (cdr (assoc 10 _enx)) @ent 1))
回复

使用道具 举报

46

主题

161

帖子

104

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
242
发表于 2022-7-5 16:19:00 | 显示全部楼层
一些屏幕截图显示了窗口在有问题的dwg中绘制区域的情况。
blk1在wcs中,blk2旋转
 
(setq _ent\u bpt(trans(cdr(assoc 10 _enx))@ent 1))
164330e63yz6u5bijdtzxt.jpg
(setq _ent\u bpt(trans(cdr(assoc 10 _enx))@ent 1))
164332pkykqy88kdlyxy7d.jpg
(setq _ent\u bpt(trans(cdr(assoc 10 _enx))@ent 0)
164333gn1gpbwikgg9kiit.jpg
回复

使用道具 举报

46

主题

161

帖子

104

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
242
发表于 2022-7-5 16:27:42 | 显示全部楼层
解决方案是:
  1. (setq _ent_bpt (trans (cdr (assoc 10 _enx)) @ent 2))
回复

使用道具 举报

2

主题

261

帖子

20

银币

初来乍到

Rank: 1

铜币
8
发表于 2022-7-5 16:41:13 | 显示全部楼层
ziele_o2k
检查问题文件中的值目标
 
在命令行“_view”上,它显示了什么?
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:52:01 | 显示全部楼层
这是一个在模型空间中绘制所有标题栏的版本。检查标题栏的旋转和修改窗口参数不需要太多时间,为什么UCS OB PLAN不使用视图呢?
 
查看布局并在多视图中进行旋转不是更好吗?
在模型中打印标题。lsp
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-14 21:04 , Processed in 2.685363 second(s), 69 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表