乐筑天下

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

[编程交流] 绘制垂直线

[复制链接]

12

主题

25

帖子

13

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 22:39:31 | 显示全部楼层 |阅读模式
救命啊!我试图编写一个快速lisp例程,从用户选择的点绘制一条垂直线:
 
  1. (defun c:lz()
  2. (setq pt1 (getpoint " Pick Point: "))
  3. (setq x (rtos (car pt1)))
  4. (setq y (rtos (cadr pt1)))
  5. (setq pt2 (strcat x "," y ",100"))
  6. (command "line" pt1 pt2 "")
  7. )

 
e、 g.如果我点击点10,20,它将绘制一条从10,20,0到10,20100的线。
 
如何在不使用字符串的情况下将pt2变量放入line命令?
 
谢谢
 
抢劫
回复

使用道具 举报

7o7

0

主题

93

帖子

93

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 22:52:19 | 显示全部楼层
您可以使用(列表(car pt1)(cadr pt1)100)作为pt2
回复

使用道具 举报

12

主题

25

帖子

13

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 23:01:30 | 显示全部楼层
谢谢,7o7。
 
这是我努力实现的第1阶段,共2阶段:
 
我有两个视口,一个用于平面,一个用于立面。我使用上面的lz例程在平面图中绘制垂直线。然后切换到高程视口,我想将刚刚创建的直线的z值更改为0,相对于高程视口。
 
我该怎么做?
 
谢谢
 
抢劫
 
1、从平面垂直画线
2、我切换到前视图中的vport。
3、我想把直线的z值改为0
回复

使用道具 举报

12

主题

25

帖子

13

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 23:13:52 | 显示全部楼层
  1. (defun c:lz()
  2. (setq SnapVal (getvar "osmode"))
  3. (setq pt1 (getpoint " Pick Point: "))
  4. (command "osmode" "0")
  5. (setq pt2 (list (car pt1) (cadr pt1) 100))
  6. (command "line" pt1 pt2 "")
  7. (command "osmode" SnapVal)
  8. )

 
2需要改进:
 
1.如果我单击平面图中直线的端点,它会创建一条零长度直线?我在代码中添加了osmode 0,但它并没有解决这个问题。
2.由于舍入精度,直线不是真正垂直的-如果我想用@0,0100代替pt2,我该如何实现?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 23:16:04 | 显示全部楼层
考虑一下这个mod。
 
  1. (defun c:lz (/ p1 )
  2. (while (setq p1 (getpoint "\n Pick Point: "))
  3.    (entmake (list '(0 . "LINE")(cons 10 p1) (cons 11 (polar p1 (/ pi 2.) 100.))))
  4.    )
  5. (princ)
  6. )
回复

使用道具 举报

12

主题

25

帖子

13

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 23:28:31 | 显示全部楼层
谢谢Tharwat,
 
我已经尝试过这种方法和一些变体,但仍然存在与上面相同的问题:
 
1?在选择拾取点后,我将osmode 0添加到代码中,但它并没有克服这一问题。
2
 
有人能帮我解释一下吗?我正在根据平面图绘制许多立面图,在平面图的每一条垂直线上键入@0,0100,这让我慢慢疯了!
 
抢劫
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 23:32:12 | 显示全部楼层
您应该用一个样例图形或一个快照来描述代码的目的。
 
你在WCS工作吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 23:43:19 | 显示全部楼层
相对于UCS的垂直线:
  1. (defun c:vl1 ( / p )
  2.    (if (setq p (getpoint "\nSpecify point for line: "))
  3.        (entmake
  4.            (list
  5.               '(0 . "LINE")
  6.                (cons 10 (trans p 1 0))
  7.                (cons 11 (trans (mapcar '+ p '(0 100 0)) 1 0))
  8.            )
  9.        )
  10.    )
  11.    (princ)
  12. )

 
相对于WCS的垂直线:
  1. (defun c:vl2 ( / p )
  2.    (if (setq p (getpoint "\nSpecify point for line: "))
  3.        (entmake
  4.            (list
  5.               '(0 . "LINE")
  6.                (cons 10 (trans p 1 0))
  7.                (cons 11 (mapcar '+ (trans p 1 0) '(0 100 0)))
  8.            )
  9.        )
  10.    )
  11.    (princ)
  12. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 06:10 , Processed in 0.447367 second(s), 68 queries .

© 2020-2025 乐筑天下

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