63
242
181
后起之秀
使用道具 举报
0
9
11
限制会员
(defun c:test ( / activedocument ename1 ename2 iacadapplication modelspace mp1 mp2 object1 object2)(setq IAcadApplication (vlax-get-acad-object) ActiveDocument (vla-get-ActiveDocument IAcadApplication) ModelSpace (vla-get-ModelSpace ActiveDocument) EName1 (car (entsel "\nSelect the first line: ")) EName2 (car (entsel "\nSelect the Second line: ")) object1 (vlax-ename->vla-object EName1) object2 (vlax-ename->vla-object EName2) mp (lambda (p1 p2) (mapcar (function(lambda(a b)(/(+ a b 0.0) 2.0))) p1 p2)) mp1 (mp (vlax-get object1 'StartPoint) (vlax-get object1 'EndPoint)) mp2 (mp (vlax-get object2 'StartPoint) (vlax-get object2 'EndPoint)))(vla-AddLine ModelSpace (vlax-3d-point mp1) (vlax-3d-point mp2))(princ))
1
1069
1050
初露锋芒
(defun C:MLL (/ *error* acsp adoc dlt1 dlt2 ep1 ep2 flag int1 int2 ip line1 line2 nxp ocirc p1 p2 rad sp1 sp2 ss tmp x xline1 ) (if (< (atoi (substr (getvar "acadver") 1 2)) 15) (progn (alert"Programm wiil be works in\nAutoCAD 2000 and higher versions" ) (exit) (princ) ) ) (or (vl-load-com));=====================================; (defun *error* (msg) (princ msg) (vla-endundomark (vla-get-activedocument(vlax-get-acad-object) ) ) (princ) ) (defun midpoint (p1 p2) (mapcar (function (lambda (a b) (* (+ a b) 0.5) ) ) p1 p2 ) );=====================================; (defun group-by-num (lst num / ls ret) (if (= (rem (length lst) num) 0) (progn(setq ls nil)(repeat (/ (length lst) num) (repeat num (setq ls (cons (car lst) ls) lst (cdr lst) ) ) (setq ret (append ret (list (reverse ls))) ls nil )) ) ) ret );=====================================; (or adoc (setq adoc (vla-get-activedocument (vlax-get-acad-object) ) ) ) (or acsp (setq acsp (if (= (getvar "CVPORT") 1) (vla-get-paperspace adoc ) (vla-get-modelspace adoc ) ) ) ) (vla-endundomark adoc ) (vla-startundomark adoc ) (setq ss (ssget (list (cons 0 "LINE")))) (if (/= (sslength ss) 2) (progn (alert "Must be selected 2 lines only") (exit) (princ) ) ) (setq line1 (vlax-ename->vla-object (ssname ss 0))line2 (vlax-ename->vla-object (ssname ss 1))sp1 (vlax-get line1 'StartPoint)ep1 (vlax-get line1 'EndPoint)sp2 (vlax-get line2 'StartPoint)ep2 (vlax-get line2 'EndPoint)dlt1 (vlax-get line1 'Angle)dlt2 (vlax-get line2 'Angle) ) (if (or (equal dlt1 dlt2 1e-08) (equal dlt1 (+ pi dlt2) 1e-08) ) ;parallel lines (setq flag t) (setq flag nil) ) (if flag (progn (if(< (distance sp1 sp2) (distance sp1 ep2)) (progn (setq p1 (midpoint sp1 sp2) p2 (midpoint ep1 ep2) ) )