乐筑天下

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

[编程交流] 从点划分绘制一条线

[复制链接]

33

主题

96

帖子

65

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
170
发表于 2022-7-6 08:38:16 | 显示全部楼层 |阅读模式
我想选两点(距离),
把他们的分数除以我选择的数字,
然后从这些分割点画一条线,
垂直于我选择的第三个点。
我认为这很容易,但似乎不是我所想的。我从这个开始。
 
  1. (defun C:st (/ pd1 pd2 d2d sp m pd)
  2. (setq pd1 (getpoint "\nSelect first btend: "))
  3. (setq pd2 (getpoint "\nSelect second btend: "))
  4. (setq d2d (distance (cdr (reverse pd1)) (cdr (reverse pd2))))
  5. (setq sp(getreal "\nNumber of spaces between stends? "))
  6. (setq m (/ (cvunit d2d "INCHES" "FEET") (cvunit sp "INCHES" "FEET")))
  7. (setq pd (getpoint "\nSelect line to extend to:  "))
  8. (command "_.layer" "s" "s-frm-stend" "" "")
  9. (command "line" m pd ""))
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:52:57 | 显示全部楼层
不知道你的意思。发布快照
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 08:59:23 | 显示全部楼层
对于前两点,OP似乎希望自动将DIVIDE命令应用于由两点规范和输入偶数创建的(entlast)行,得到类似的结果。第三点我输了。
 
需要更多信息。
回复

使用道具 举报

GP_

8

主题

248

帖子

245

银币

初来乍到

Rank: 1

铜币
42
发表于 2022-7-6 09:06:46 | 显示全部楼层
如果我理解正确。。。尝试
 
  1. (defun C:st (/ pd1 pd2 d2d sp step pd)
  2.    (vl-load-com)
  3.    (setq pd1 (trans (getpoint "\nSelect first btend: ") 1 0))
  4.    (setq pd2 (trans (getpoint "\nSelect second btend: ") 1 0))
  5.    (setq d2d (distance pd1 pd2))
  6.    (setq sp (getint "\nNumber of spaces between stends? "))
  7.    (setq pd (vlax-ename->vla-object (car (entsel "\nSelect line to extend to:  "))))
  8.    (setq step (/ (distance pd1 pd2) sp))
  9.    (repeat (1- sp)
  10.        (setq pd1 (polar pd1 (angle pd1 pd2) step))
  11.        (entmake (list
  12.                     (cons 0 "LINE")   
  13.                     (cons 8 "s-frm-stend")  
  14.                     (cons 10 pd1)
  15.                     (cons 11 (vlax-curve-getClosestPointTo pd pd1 T))
  16.        )        )
  17.    )
  18. )
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 09:09:49 | 显示全部楼层
@总成
 
您可以使用以vlax curve-****开头的所有函数,而无需将实体转换为vla对象。
回复

使用道具 举报

GP_

8

主题

248

帖子

245

银币

初来乍到

Rank: 1

铜币
42
发表于 2022-7-6 09:21:27 | 显示全部楼层
谢谢你,塔瓦:哎呀:
 
 
我经常忘记把它放在更复杂的lisp中,然后立即插入。。。
回复

使用道具 举报

33

主题

96

帖子

65

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
170
发表于 2022-7-6 09:23:46 | 显示全部楼层
这就是我需要的。我知道我需要某种重复或循环,但不知道如何写作。你们都很棒。我试图自己学习这个程序,但我被难住了。我只是想让你们至少有四分之一的水平。谢谢大家的帮助。我希望将来我能帮助一些人来回报你们所有的帮助。
回复

使用道具 举报

GP_

8

主题

248

帖子

245

银币

初来乍到

Rank: 1

铜币
42
发表于 2022-7-6 09:32:44 | 显示全部楼层
 
不客气。
好吧,一个蛋糕或冰淇淋。。。现在
 
 
 
代码清除了不必要的东西。
  1. (defun C:st (/ pd1 pd2 sp step pd)
  2.    (setq pd1 (trans (getpoint "\nSelect first btend: ") 1 0))
  3.    (setq pd2 (trans (getpoint "\nSelect second btend: ") 1 0))
  4.    (setq sp (getint "\nNumber of spaces between stends? "))
  5.    (setq pd (car (entsel "\nSelect line to extend to:  ")))
  6.    (setq step (/ (distance pd1 pd2) sp))
  7.    (repeat (1- sp)
  8.        (setq pd1 (polar pd1 (angle pd1 pd2) step))
  9.        (entmake (list
  10.                     (cons 0 "LINE")   
  11.                     (cons 8 "s-frm-stend")  
  12.                     (cons 10 pd1)
  13.                     (cons 11 (vlax-curve-getClosestPointTo pd pd1 T))
  14.        )        )
  15.    )
  16. )
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:42:16 | 显示全部楼层
一定要注意以下事项:
 
  1. (distance nil nil)

 
... 使用IF语句可能有助于减少潜在错误:眨眼:
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-8 02:15 , Processed in 1.755613 second(s), 70 queries .

© 2020-2025 乐筑天下

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