乐筑天下

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

[编程交流] 如何获取绘图坐标

[复制链接]

2

主题

6

帖子

4

银币

初来乍到

Rank: 1

铜币
11
发表于 2022-7-5 17:29:45 | 显示全部楼层 |阅读模式
你好
 
如何获取区域坐标?
 
我知道,vla getwindowtoplot方法。
“必须将PlotType属性设置为acWindow,才能将这些坐标用于打印。”
 
但是,不是acWindow!如果使用setwindowtoplot方法设置,该方法可以获取坐标。
 
我喜欢在布局模式下绘制区域坐标。
 
我想用它来选择打印纸空间
使用ssget“_WP”点列表
你怎么能做到?
回复

使用道具 举报

20

主题

338

帖子

323

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-5 17:41:20 | 显示全部楼层
我不确定你想做什么,但你描述的方法是获得坐标的正确方法。
 
您可以使用此方法获取布局的坐标,无论其设置为acWindow还是acLayout。如果将setwindowtoplot方法设置为acLayout,则不能使用该方法,因为acLayout使用版面的纸张大小。
 
我希望这会有所帮助。
回复

使用道具 举报

2

主题

6

帖子

4

银币

初来乍到

Rank: 1

铜币
11
发表于 2022-7-5 17:51:05 | 显示全部楼层
布局设置为A布局。
我喜欢ssget的pointlist。
我喜欢选择paperspace对象。
如何获取点列表?
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 17:57:28 | 显示全部楼层
你为什么不使用这样的东西
  1. (ssget
  2. "_X"
  3. (list
  4.    (cons 410 (getvar 'ctab))
  5.    '(-4 . "<OR")
  6.      '(0 . "~VIEWPORT")
  7.      '(-4 . "<NOT")
  8.        '(69 . 1) ; Do not select the main PS viewport.
  9.      '(-4 . "NOT>")
  10.    '(-4 . "OR>")
  11. )
  12. )
回复

使用道具 举报

2

主题

6

帖子

4

银币

初来乍到

Rank: 1

铜币
11
发表于 2022-7-5 17:59:49 | 显示全部楼层
thx,但对我不好。
 
此代码在图纸空间中全选。
 
我需要打印区域上的对象。只是,不是全部。
 
我的代码:
  1. (setq plottedarea (getWindowToPlot layout))
  2. (setq x1 (caar  plottedarea)
  3. y1 (cadar plottedarea)
  4. x2 (caadr plottedarea)
  5. y2 (cadadr plottedarea))
  6. (setq ents (ssget "_CP" (list (car plottedarea)
  7.                         (list x2 y1)
  8.                         (cadr plottedarea)
  9.                         (list x1 y2))
  10.             (list (cons 8  layer) (cons 0  "INSERT")))) ; "_layout" fólián keresünk objektumokat, itt lesz a rajzpecsét és a keret, a navigáció is!

 
但是这个rutine不好,A布局图类型:
 
  1. (defun getWindowToPlot (layout / balalso jobbfelso plottype)
  2. (vla-GetWindowToPlot layout 'balalso 'jobbfelso)
  3. (setq balalso   (vlax-safearray->list balalso)
  4. jobbfelso (vlax-safearray->list jobbfelso))
  5. (list balalso jobbfelso)
  6. )
回复

使用道具 举报

20

主题

338

帖子

323

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-5 18:08:00 | 显示全部楼层
让我们看看acLayout和acWindow的区别。
 
当布局设置为“A布局”时,AutoCad将打印表窗口从0,0设置到右上角,这由设置的纸张大小决定。
 
如果需要自定义可打印窗口,则需要将其设置为acWindow。
 
因此,如果你想做你似乎想做的事情,那么布局需要设置为acWindow。
 
这有意义吗?
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 18:18:33 | 显示全部楼层
好的,这是第一次尝试:
  1. ; (LayoutEntityList (getvar 'ctab))
  2. (defun LayoutEntityList (nme / dic enm)
  3. (if
  4.    (and
  5.      (setq dic (cdr (assoc -1 (dictsearch (namedobjdict) "ACAD_LAYOUT"))))
  6.      (setq enm (cdr (assoc -1 (dictsearch dic nme))))
  7.    )
  8.    (entget enm)
  9. )
  10. )
  11. ; The function assumes symmetrical margins (left=right, top=bottom).
  12. ; Groupcodes:
  13. ;  40 ; Left margin in mm.
  14. ;  41 ; Bottom margin in mm.
  15. ;  44 ; Paper width in mm.
  16. ;  45 ; Paper height in mm.
  17. ;  72 ; Plot units.
  18. ;  73 ; Plot rotation.
  19. ; 142 ; Numerator of print scale.
  20. ; 143 ; Denominator print scale.
  21. ; 148 ; Paper origin: X value.
  22. ; 149 ; Paper origin: Y value.
  23. ; (command "_.rectangle" "_non" (car (LayoutPaperWindow (getvar 'ctab) T)) "_non" (cadr (LayoutPaperWindow (getvar 'ctab) T)))
  24. (defun LayoutPaperWindow (nme inclMarginsP / btm elst fac hgt lft ptBL wid)
  25. (if (setq elst (LayoutEntityList nme))
  26.    (progn
  27.      (setq fac
  28.        (/
  29.          (cdr (assoc 143 elst))
  30.          (cdr (assoc 142 elst))
  31.          (if (zerop (cdr (assoc 72 elst))) 25.4 1.0)
  32.        )
  33.      )
  34.      (if (zerop (rem (cdr (assoc 73 elst)) 2))
  35.        (progn
  36.          (setq lft (cdr (assoc 40 elst)))
  37.          (setq btm (cdr (assoc 41 elst)))
  38.          (setq wid (cdr (assoc 44 elst)))
  39.          (setq hgt (cdr (assoc 45 elst)))
  40.        )
  41.        (progn
  42.          (setq lft (cdr (assoc 41 elst)))
  43.          (setq btm (cdr (assoc 40 elst)))
  44.          (setq wid (cdr (assoc 45 elst)))
  45.          (setq hgt (cdr (assoc 44 elst)))
  46.        )
  47.      )
  48.      (list
  49.        (setq ptBL
  50.          (list
  51.            (- (- (cdr (assoc 148 elst))) (if inclMarginsP (* fac lft) 0.0))
  52.            (- (- (cdr (assoc 149 elst))) (if inclMarginsP (* fac btm) 0.0))
  53.          )
  54.        )
  55.        (list
  56.          (+ (car ptBL)  (* fac wid) (if inclMarginsP 0.0 (* -2.0 fac lft)))
  57.          (+ (cadr ptBL) (* fac hgt) (if inclMarginsP 0.0 (* -2.0 fac btm)))
  58.        )
  59.      )
  60.    )
  61. )
  62. )
回复

使用道具 举报

2

主题

6

帖子

4

银币

初来乍到

Rank: 1

铜币
11
发表于 2022-7-5 18:24:07 | 显示全部楼层
嘿,罗伊,
 
这是非常好的代码。
这正是我所需要的。
 
非常感谢你。
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 18:35:23 | 显示全部楼层
... 我必须承认,这有点让人困惑,所以我很高兴听到代码对你有用。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-19 05:57 , Processed in 1.922927 second(s), 70 queries .

© 2020-2025 乐筑天下

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