worknet 发表于 2022-7-6 00:01:25

坡度例行程序

你好,我是这方面的新手,我只是需要一个lisp例程来绘制一个斜率。
 
我已经试过很多了,但效果不好。
 
谢谢

ReMark 发表于 2022-7-6 00:07:42

你能给我们提供更多细节吗?并尽可能具体。非常感谢。

worknet 发表于 2022-7-6 00:08:22

好的,我尝试了很多例程,但它们带来了“这不是一条多段线”的信息,但事实上,我指出的这条线是一条多段线。
 
http://2.bp.blogspot.com/_GaLPVcZjwQs/S5543I1xGaI/AAAAAAAAIyk/cjCzeSJv0Ik/s320/talude_01.jpg

asos2000 发表于 2022-7-6 00:13:43

试试这个
Code:
;|--------------Inclination of line-------------------
               q_|_|| _\|| q_|| _\|                  
                                                   
يقوم بتحديد ميل الخط من خلال اختيار نقطتين عليه      
                  و من الممكن ان يختار المستخدم      
               بين ان يرسم خط بين النقطتين او لا      
                                                   
------------------------------------------------------
Author: Hasan M. Asous, 2010                        
Copyright © 2010 by HasanCAD, All Rights Reserved.
Contact: HasanCAD @ TheSwamp.org,                  
          asos2000 @ CADTutor.net                  
          HasanCAD@gmail.com                        
------------------------------------------------------
Version: 1   20 Oct 2010                        
____________________________________________________|;
;   q_|_|| _\|| q_|| _\|   ;
;       Mainroutine Start      ;
(defun c:TanLine (/ p1 p2 p3)
; @ HasanCAD
(vl-load-com)
(HSN:DDwnMnuSetSysVar)
(and
   (setq doc (cond (doc) ((vla-get-ActiveDocument (vlax-get-Acad-Object)))))
   (setq spc (if (zerop (vla-get-activespace doc))
(if (= (vla-get-mspace doc) :vlax-true) (vla-get-modelspace doc) (vla-get-paperspace doc))
(vla-get-modelspace doc)))
   )

(if (not TL-sel) (setq TL-sel "Points"))
(initget "select Line or Points")
(setq TL-sel (cond ( (getkword (strcat "\nChooseهل تريد تحديد خط او اختيار نقطتين <" TL-sel ">: ") ) ) ( TL-sel ) ))
(if (equal TL-sel "Points")
   (progn
   (and
(setq p1 (trans (getpoint "\nFirst Point اختار النقطة الاولى على الخط ")1 0))
       (setq p2 (trans (getpoint p1 "\nSecond Point اختار النقطة الثانية على الخط")1 0))
       (setq p3 (trans (getpoint "\nText insertion Point قم بتحديد مكان النص")1 0))
       )
   (setq tan2 (/ (- (cadr p2) (cadr p1)) (- (car p2) (car p1))))
   (IF (< 1000 (ABS (- (cadr p2) (cadr p1))))
(setq h 220)
(if (< 100 (ABS (- (cadr p2) (cadr p1))))
(setq h 22)
(setq h 2.2)))
   (if (not TL-Line) (setq TL-Line "Yes"))
   (initget "Yes No")
   (setq TL-Line (cond ( (getkword (strcat "\nChoose هل تريد رسم خط بين النقطتين <" TL-Line ">: ") ) ) ( TL-Line ) ))
   (if (equal TL-Line "Yes")
(progn
(HSN:TL-Text h)
         (HSN:TL-Line)
)
(progn
(HSN:TL-Text h)
)
)
   )
   (progn
   (setq TL:SS (entget (car (entsel))))
   (if (and
    (equal TL-sel "Line")
    (equal (cdr (assoc 0 TL:SS)) "LINE")
    )
(Progn   
         (setq p1 (cdr (assoc 10 TL:SS)))
         (setq p2 (cdr (assoc 11 TL:SS)))
(setq p3 (trans (getpoint "\nText insertion Point قم بتحديد مكان النص")1 0))
(setq tan2 (/ (- (cadr p2) (cadr p1)) (- (car p2) (car p1))))
(HSN:TL-Text)
)
(progn
(princ "\nPLease Seect a line or Points")
)
)
   )
   )
(HSN:ReDDwnMnuSetSysVar)
(vla-EndUndoMark ActDoc)
)
;   q_|_|| _\|| q_|| _\|   ;
;       Mainroutine End      ;
;   q_|_|| _\|| q_|| _\|   ;
;       Subroutine Start       ;
(defun *error* (msg)
(and uFlag (vla-EndUndoMark doc))
(or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
   (princ (strcat "\n** Error: " msg " **")))
(princ)
)
(defun HSN:DDwnMnuSetSysVar ()
; @ HasanCAD
(setq OldOS (getvar "osmode"))
(setq OldDynmode (getvar "dynmode"))
(setq OldDynprompt (getvar "dynprompt"))

(setvar "osmode" 33)
(setvar "dynmode" 1)
(setvar "dynprompt" 1)
(setvar "cmdecho" 0)      
)
(defun HSN:ReDDwnMnuSetSysVar ()
; @ HasanCAD
(setq *error* TERR$)
(setvar "osmode" OldOS)
(setvar "dynmode" OldDynmode)
(setvar "dynprompt" OldDynprompt)
)
(defun HSN:TL-Text (H)
; @ HasanCAD
      (entmakex (list
    (cons 0 "TEXT")
                  (cons 10p3)
                  (cons 40 H)
                  (cons 1 (strcat (rtos (abs (* tan2 100))2 2) "%"))
    ))
)
(defun HSN:TL-Line ()
; @ HasanCAD
      (entmake (list
   (cons 0 "LINE")
               (cons 10 p1)
               (cons 11 p2)
   ))
)
;   q_|_|| _\|| q_|| _\|   ;
;      Subroutine End      ;
(princ "\nTanLine.lsp ~ Copyright © by HasanCAD")
(princ "\n   ...Type TanLine to Invoke...   ")
(princ)

Tharwat 发表于 2022-7-6 00:16:56

 
 
您的例程没有返回之前调整过的动态输入。
第一次开始例行程序时,点的选项不起作用。
例程结束时返回错误。。。
 
 
为什么不根据直线旋转斜率或选定点旋转插入文字。

Tharwat 发表于 2022-7-6 00:19:39

此外,以下所有系统变量也没有像以前那样重新设置。
请再次检查您的例行程序。
 
谢谢
 
塔瓦特

asos2000 发表于 2022-7-6 00:22:18

谢谢塔瓦的回复
 
你能帮我修复这个错误吗
我能处理的第二条评论
 
谢谢

Tharwat 发表于 2022-7-6 00:23:37

 
不客气。
 
看看这个,如果你有任何问题,不要犹豫。
 
享受代码。
 
塔瓦特

Guest athabe 发表于 2022-7-6 00:28:15

代码很棒,它给了你正确的答案(斜坡阅读)
 
我希望得到4位小数的答案,并且可以选择插入文本或显示阅读信息。
 
谢谢

Tharwat 发表于 2022-7-6 00:32:56

 
你用过哪种方法,对你有用?(职位编号)
页: [1] 2
查看完整版本: 坡度例行程序