乐筑天下

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

[编程交流] 需要小俯卧撑

[复制链接]

8

主题

71

帖子

66

银币

初来乍到

Rank: 1

铜币
43
发表于 2022-7-6 11:56:59 | 显示全部楼层 |阅读模式
大家好
我想创建一个lisp例程,它将要求用户选择一条线,然后在同一条线上绘制一个对象(在所选线的相同角度上)。假设对象是一个矩形。虽然物体实际上不仅仅是一个矩形。剩下的我能搞定。我只是不知道如何获得拾取的线的角度和绘制。
我只需要启动这个程序。对于这里的许多Lisp程序冠军来说,这可能是一项非常小的工作。等待一些好的灵魂来解决我的这个问题。
 
提前谢谢你。
维维安
125700smc5tknccreha3m8.jpg
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:01:33 | 显示全部楼层
两种方式:
 
  1. (defun c:test1 (/ ent elst)
  2. (if (setq ent (car (entsel "\nSelect Line: ")))
  3.    (progn
  4.      (setq elst (entget ent))
  5.      
  6.      (print (angle (cdr (assoc 10 elst))
  7.                    (cdr (assoc 11 elst))))))
  8. (princ))
  9. (defun c:test2 (/ ent pt)
  10. (if (setq ent (entsel "\nSelect Line: "))
  11.    (progn
  12.      (setq pt (cadr ent) ent (car ent))
  13.      (print (angle '(0 0 0)
  14.               (vlax-curve-getFirstDeriv ent
  15.                 (vlax-curve-getParamatPoint ent
  16.                   (vlax-curve-getClosestPointto ent pt)))))))
  17. (princ))

 
第一种仅适用于直线,并使用起点和终点之间的角度。
 
第二种方法适用于所有曲线对象(直线、样条曲线、圆弧、椭圆等),并在选定点处使用一阶导数。
 
希望这有帮助,
 
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 12:04:52 | 显示全部楼层
另一种方法:
  1. [b][color=BLACK]([/color][/b]defun c:ldef [b][color=FUCHSIA]([/color][/b]/ ss en ed p10 p11 lan[b][color=FUCHSIA])[/color][/b]
  2. [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]or [b][color=MAROON]([/color][/b]not ss[b][color=MAROON])[/color][/b]
  3.             [b][color=MAROON]([/color][/b]> [b][color=GREEN]([/color][/b]sslength ss[b][color=GREEN])[/color][/b] 1[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  4.         [b][color=NAVY]([/color][/b]princ [color=#2f4f4f]"\nSelect 1 Line To Work With:   "[/color][b][color=NAVY])[/color][/b]
  5.         [b][color=NAVY]([/color][/b]setq ss [b][color=MAROON]([/color][/b]ssget [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"LINE"[/color][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  6. [b][color=FUCHSIA]([/color][/b]setq en [b][color=NAVY]([/color][/b]ssname ss 0[b][color=NAVY])[/color][/b]         [color=#8b4513]; Entity Name[/color]
  7.        ed [b][color=NAVY]([/color][/b]entget en[b][color=NAVY])[/color][/b]           [color=#8b4513]; Entity Definition[/color]
  8.       p10 [b][color=NAVY]([/color][/b]cdr [b][color=MAROON]([/color][/b]assoc 10 ed[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]   [color=#8b4513]; 1st End Point[/color]
  9.       p11 [b][color=NAVY]([/color][/b]cdr [b][color=MAROON]([/color][/b]assoc 11 ed[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]   [color=#8b4513]; 2nd End Point[/color]
  10.       lan [b][color=NAVY]([/color][/b]angle p10 p11[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]      [color=#8b4513]; Angle In Radians[/color]
  11. lan[b][color=BLACK])[/color][/b]

 
 
我喜欢使用(ssget),因为它允许最后/上一个/交叉和选择过滤等输入。
 
-大卫
回复

使用道具 举报

8

主题

71

帖子

66

银币

初来乍到

Rank: 1

铜币
43
发表于 2022-7-6 12:07:09 | 显示全部楼层
谢谢李和大卫
 
祝你圣诞快乐,新年快乐。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:10:03 | 显示全部楼层
 
不客气,也祝你圣诞快乐
回复

使用道具 举报

8

主题

71

帖子

66

银币

初来乍到

Rank: 1

铜币
43
发表于 2022-7-6 12:15:53 | 显示全部楼层
嘿,伙计们,我又卡住了
我还想得到这条线的长度,这样我就可以提前使用它。
你能帮帮我吗
 
(默认c:as(/ss en ed p10 p11 lan)
(setq osm(getvar“osmode”))
(setvar“osmode”0)
(while(或(非ss))
(>(sslength ss)1)
(princ“\n选择要使用的1行:”)
(setq ss(ssget(list(cons 0“LINE”)))))
(setq en(ssname ss 0);实体名称
ed(entget en);实体定义
p10(cdr(助理10教育));第1个终点
p11(cdr(assoc 11 ed));第二终点
lan(角度p10 p11);角度(弧度)
lth(汽车(距离p10 p11)))
(警报(strcat(rtos lth)“是此行的长度”)
(setvar“osmode”osm)
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 12:17:26 | 显示全部楼层
 
只需更改此行:
  1. lth(car (distance p10 p11)))

在…上
  1. lth (distance p10 p11))

 
~'J'~
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:20:03 | 显示全部楼层
维维安,
 
如果您还没有,请确保查看Visual LISP帮助文件-它们将为您提供所需的大多数LISP函数的正确语法和格式。
 
我建议您使用Visual LISP编辑器或Notepad++/Vim等创建代码。。
 
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 12:25:00 | 显示全部楼层
另一个问题是(距离)返回3D中的真实距离。
 
(角度)是2D值,可以提取每个平面角度:
 
  1.   [b][color=BLACK]([/color][/b]setq p10 '[b][color=FUCHSIA]([/color][/b]1 4 2[b][color=FUCHSIA])[/color][/b]
  2.         p11 '[b][color=FUCHSIA]([/color][/b]3 7 5[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]
  3.   [b][color=BLACK]([/color][/b]setq
  4.         XY [b][color=FUCHSIA]([/color][/b]angle [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]nth 0 p10[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]nth 1 p10[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  5.                   [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]nth 0 p11[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]nth 1 p11[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  6.         XZ [b][color=FUCHSIA]([/color][/b]angle [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]nth 0 p10[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]nth 2 p10[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  7.                   [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]nth 0 p11[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]nth 2 p11[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  8.         YZ [b][color=FUCHSIA]([/color][/b]angle [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]nth 1 p10[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]nth 2 p10[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  9.                   [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]nth 1 p11[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]nth 2 p11[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  10.     [b][color=BLACK])[/color][/b]

-大卫
回复

使用道具 举报

8

主题

71

帖子

66

银币

初来乍到

Rank: 1

铜币
43
发表于 2022-7-6 12:27:57 | 显示全部楼层
谢谢大家
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 10:33 , Processed in 0.748633 second(s), 75 queries .

© 2020-2025 乐筑天下

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