乐筑天下

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

[编程交流] 沿两条线的连接点

[复制链接]

1

主题

8

帖子

7

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:03:21 | 显示全部楼层 |阅读模式
有没有人能用lisp解决方案将等距点连接成两条相对的长线。这些线可能是弯曲的,也可能不平行。
 
其思想是,该程序将沿着选定方向的两条直线工作,每次它碰到直线上的一个点时,它就会用一条多段线将它们连接起来。
 
我不知道这是否清楚
 
非常感谢
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:09:01 | 显示全部楼层
一种使用lisp的方法,而不是代码使用分割创建点,然后连接点,如果说每行5个点,那么1-6 2-7 3-8 4-9 5-10。有些人现在可能不得不去工作了。
回复

使用道具 举报

1

主题

8

帖子

7

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:09:58 | 显示全部楼层
所以我想我理解你的帖子。在我的情况下,这些观点已经存在;我已经使用了>,我希望Autocad能够从一端沿直线连接点。所以我要找的不需要这一步。
 
我已经做了MATLAB编码,所以有一个编码的一般理解,但不知道LISP。有人知道如何把一些代码放在一起来实现这一点吗?
 
谢谢
回复

使用道具 举报

0

主题

301

帖子

301

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 23:13:39 | 显示全部楼层
churchntj,
 
列出两条多段线的顶点,然后entmakex取
列表1中的第一个端点和列表2中的第二个端点
 
  1. (defun c:test (/ a b lst1 lst2)
  2.    ;;; listpol   by Gille Chanteau                                            ;
  3.    ;;; Returns the vertices list of any type of polyline (WCS coordinates)    ;
  4.    ;;;                                                                        ;
  5.    ;;; Argument                                                               ;
  6.    ;;; en, a polyline (ename or vla-object)                                   ;
  7.    (defun listpol (en / i p l)  
  8.       (setq i (if (vlax-curve-IsClosed en)
  9.                  (vlax-curve-getEndParam en)
  10.          (+ (vlax-curve-getEndParam en) 1)
  11.       )
  12.       )             
  13.       (while (setq p (vlax-curve-getPointAtParam en (setq i (1- i))))
  14.         (setq l (cons (trans p 0 1 ) l))
  15.       )
  16.    )
  17.   ;---------------------------------------------------------------------------------;
  18.    (setq lst1 (listpol (car (entsel "\Select First Polyline: ")))
  19.   lst2 (listpol (car (entsel "\Select Second Polyline: ")))
  20.    )
  21.    (mapcar '(lambda (a b) (entmakex (list (cons 0  "LINE")
  22.                                    (cons 10 a)
  23.                                    (cons 11 b)
  24.                              )
  25.                    )
  26.       ) lst1 lst2)
  27. )
回复

使用道具 举报

15

主题

243

帖子

228

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-5 23:16:48 | 显示全部楼层
ymg做得好,你在这个例程中使用mapcar和lambda是相当自我解释的,有助于我理解函数。为此,我非常仁慈。
非常感谢。
回复

使用道具 举报

0

主题

301

帖子

301

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 23:20:06 | 显示全部楼层
bhull,
 
谢谢谢谢你的好话。
 
ymg公司
回复

使用道具 举报

1

主题

8

帖子

7

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:23:39 | 显示全部楼层
非常感谢,看起来很棒。
我当前不在带有Autocad的PC上。该LISP是否适用于沿两条样条曲线、多边形线、圆弧等或其组合的点?
 
谢谢
回复

使用道具 举报

0

主题

301

帖子

301

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 23:26:02 | 显示全部楼层
churchntj,
 
它将与arc一起工作。
 
通过样条,无论顶点由vlax曲线函数定义
将被加入。(这些不同于用于创建样条曲线的控制点)
 
所以我们可以说它有效。
 
ymg公司
000328uejejiq6f5644afi.jpg
回复

使用道具 举报

1

主题

8

帖子

7

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:29:15 | 显示全部楼层
嘿,好了,
 
好的,回到工作中,并尝试了Lisp程序。我不确定我是否很清楚地表达了我在寻找什么。
实际上,我在寻找放置在直线、多段线、样条曲线或圆弧上的点,以与放置在另一条线上的点连接。此外,理想情况下,这些点将由多段线而不是直线连接。它看起来与您显示的图像相同,只是这些点连接在一起,并且不是多段线的顶点。
我会包括一个附件,但有任何问题上传到论坛。
回复

使用道具 举报

0

主题

301

帖子

301

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 23:33:32 | 显示全部楼层
churchntj,
 
以下要求在系统上安装Express Tools。
 
多段线用作选择点的围栏。
 
  1. (defun c:joinpt (/ a b en1 en2 enl1 enl2 flt lst1 lst2 p)
  2.   ;;*************************************************************************;
  3.   ;; getfencesel        by ymg                                               ;
  4.   ;;                                                                         ;
  5.   ;; Arguments:  en,  Linear Entity Name (Polylines, Arc, Ellipse etc.)      ;
  6.   ;;            flt,  A valid Entity filer Ex: '((0 . "3DFACE"))  or nil     ;
  7.   ;;                                                                         ;
  8.   ;;   Returns: A Selection Set of Entities touching the selecting entity.   ;
  9.   ;;                                                                         ;
  10.   ;;  Requires: Express Tools                                                ;
  11.   ;;*************************************************************************;
  12.   (defun getfencesel (en flt / fe px ss)   
  13.      (acet-ss-zoom-extents (setq ss (ssadd en)))
  14.      (setq px (* 0.75 (acet-geom-pixel-unit))
  15.            fe (acet-list-remove-adjacent-dups (acet-geom-object-point-list en (/ px 2.0)))
  16.            ss (if flt (ssget "_F" fe flt) (ssget "_F" fe))
  17.      )      
  18.   )
  19.   ;;*************************************************************************;
  20.   ;; mk_lwp    by Alan J Thompson                                            ;
  21.   ;; Argument: pl, A list of points (2d or 3d)                               ;
  22.   ;; Create an LWPolyline at Elevation 0, on Current Layer.                  ;
  23.   ;; Return: Polyline Object                                                 ;
  24.   ;;*************************************************************************;
  25.   (defun mk_lwp (pl)
  26.      (vlax-ename->vla-object
  27.         (entmakex
  28.           (append (list '(0 . "LWPOLYLINE")
  29.                         '(100 . "AcDbEntity")
  30.                         '(100 . "AcDbPolyline")
  31.                          (cons 90 (length pl))
  32.                         '(70 . 0)
  33.                   )
  34.                   (mapcar '(lambda (p) (cons 10 (trans (list (car p) (cadr p)) 1 0))) pl)
  35.           )
  36.        )
  37.      )
  38.   )
  39.   (setq en1 (car (entsel "\nSelect First Polyline: "))
  40. en2 (car (entsel "\nSelect Second Polyline: "))
  41. flt '((0 . "POINT"))
  42.        enl1 (acet-ss-to-list (getfencesel en1 flt))
  43. enl2 (acet-ss-to-list (getfencesel en2 flt))
  44.   )
  45.   (setq lst1 nil lst2 nil)
  46.   (foreach e enl1
  47.      (setq lst1 (cons (cdr (assoc 10 (entget e))) lst1))
  48.   )            
  49.   (foreach e enl2
  50.      (setq lst2 (cons (cdr (assoc 10 (entget e))) lst2))
  51.   )
  52.   (mapcar '(lambda (a b) (mk_lwp (list a b))) lst1 lst2)
  53.   (princ)
  54. )     

 
在AlanJT例程的帮助下,点与LWpolyline连接
000332x3nrdc6syrv6bdd9.jpg
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 03:21 , Processed in 1.505224 second(s), 74 queries .

© 2020-2025 乐筑天下

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