07.08.2020 17:18    

eglacier61
merhabalar.. elimdeki lispde komutumun bir parçası aşağıda gözüküyor, komut 0.6 cm uzunluğunda bir çizgi çiziyor ve üstüne yazılar yazıyor. bu yazısı 0.6 cm olan çizginin üzerinde nasıl ortalayabilirim ? şuanda çizginin en sol kısmına yazıyor yazıyı. şimdiden teşekkür ederim.
(command "text" "r" pt3 "0.13" "0" TY)

07.08.2020 17:42    

Travaci
Tamamını paylaşırsanız yardımcı oluruz.

07.08.2020 17:47    

eglacier61
Alıntı
Travaci :
Tamamını paylaşırsanız yardımcı oluruz.


tabiki,
(DEFUN C:XS()
(setq osm (getvar "OSMODE"))
(setq w1 (getpoint "\nnoktayi pikle:")
w2 (getreal "\nkiyas kotu:"))
(command "osmode" "0")
(setvar "DONUTID" w2)
(setq w (list (car w1) (- (cadr w1) w2)))
(command "ucs" "o" w)
(command "osmode" osm)
)
;ENKESIT OFSET VE KOTLARI UZERINE YAZAR
(DEFUN C:KK (/ PT0 TPX TPY PT1 PT2 PT3 PT4 PT5 PT6 PT7 YAZYUK MESAFE ACI TX TY DONME)
(SETQ PT0 (GETPOINT "\nNOKTAYI PICK'LE :")
has 2)
(SETQ TPX (NTH 0 PT0)
TPY (NTH 1 PT0)
TPZ (NTH 2 PT0)
PT1 (GETPOINT "\nYERLESTIRME NOKTASINI GIR: ")
TPX1 (NTH 0 PT1)
PT2 (polar PT1 0 0.60)
PT3 (polar PT2 (/ pi 1.5) 0.05)
PT4 (polar PT2 (* pi 1.5) 0.19)
PT5 (polar PT1 pi 0.60)
PT6 (polar PT5 (/ pi 1.5) 0.05)
PT7 (polar PT5 (* pi 1.5) 0.19)
)

( SETQ TX (RTOS TPX 2 has))
( SETQ TY (RTOS TPY 2 has))
( SETQ TZ (RTOS TPZ 2 has))


(command "layer" "n" "ENK_KOTLAR" "")
(command "layer" "s" "ENK_KOTLAR" "")
(command "layer" "c" "2" "" "")
(setq osm (getvar "OSMODE"))
(command "osmode" "0")

(if (> (- TPX1 TPX) 0)
(progn
(command "text" "r" pt3 "0.13" "0" TY)
(command "text" "r" pt4 "0.13" "0" TX)
(COMMAND "LINE" PT0 PT1 PT2 "")
(command "COLOR" "BYLAYER" "")
(command "osmode" osm)
);progn
);if

(if (< (- TPX1 TPX) 0)
(progn
(command "text" pt6 "0.13" "0" TY)
(command "text" pt7 "0.13" "0" TX)
(COMMAND "LINE" PT0 PT1 PT5 "")
(command "COLOR" "BYLAYER" "")
(command "osmode" osm)
);progn
);if
; (command "layer" "s" "TABAKA" "")
)

07.08.2020 20:42    

Travaci
Daha önceden benzerini yazmışım.
Yazı yüksekliğini textsize ile değiştirebilirsiniz.

Kod:

(defun c:crd (/ *error* p1 p2 p3 ts mp ad)
  (defun *error* (msg) (princ))
  (if (setq p1 (getpoint "\nSpecify first point: "))
    (if (setq p2 (getpoint p1 "\nSpecify second point: "))
      (progn
        (setq ts (getvar 'textsize)
              p1 (trans p1 1 0)
              p2 (trans p2 1 0)
              p3 (polar p2 (if (< (car p1) (car p2)) 0 pi)
                 (* (strlen (rtos (max (abs (car p1)) (abs (cadr p2))) 2 2)) ts))
              mp (polar p2 (angle p2 p3) (/ (distance p2 p3) 2))
              ad (vla-get-activedocument (vlax-get-acad-object)))
        (vla-startundomark ad)
        (drw_line p1 p2) (drw_line p2 p3)
        (wrt_text (polar mp (/ pi 2) ts) (rtos (car p1) 2 2))
        (wrt_text (polar mp (* pi 1.5) ts) (rtos (cadr p1) 2 2))
        (vla-endundomark ad)
      )
    )
  ) (princ)
)

(vl-load-com)

(defun drw_line (a b)
  (entmake (list (cons 0 "line") (cons 10 a) (cons 11 b) (cons 8 "COORDINATE")))
)

(defun wrt_text (x y)
  (entmake (list (cons 0 "TEXT") (cons 10 x) (cons 11 x) (cons 1 y)
    (cons 72 1) (cons 73 2) (cons 40 ts) (cons 8 "COORDINATE")))
)

Travaci (10.02.2021 10:11 GMT)

08.08.2020 08:03    

eglacier61
UCS sisteminin yerini değiştirdiğimde sizin lispdeki koordinatlar değişmiyor, bunu nasıl yapabilirim ? bana ucs ye bağlı bi koordinat denklemi lazım.

09.08.2020 17:48    

Travaci
Kod:

...     
  (wrt_text (polar mp (/ pi 2) ts) (rtos (car (trans p1 0 1)) 2 2))
  (wrt_text (polar mp (* pi 1.5) ts) (rtos (cadr (trans p1 0 1)) 2 2))
...

10.08.2020 10:32    

eglacier61
Travaci yardımlarınız için çok teşekkür ederim. çok güzel oldu.. fakat 2 tane problemim daha var :) 1. si bendeki lisp de üst kısımda y ekseni yazıyordu alt kısımda x ekseni sizinkinde tam tersi, projemin devamı açısından aynı şekilde ilerletebilirsem güzel olur.. koordinatları ters çevirmemiz mümkün mü acaba ?
2. si düz çizginin uzunluğunu biraz kısaltmak istesem nereden yapabilirim ?

10.08.2020 11:38    

Travaci
Kod:

...     
  (wrt_text (polar mp (/ pi 2) ts) (rtos (cadr (trans p1 0 1)) 2 2))
  (wrt_text (polar mp (* pi 1.5) ts) (rtos (car (trans p1 0 1)) 2 2))
...


Kod:

(* (- (strlen ...) 1) ts))


Bu kısmı ekleyin, değeri değiştirerek istediğiniz uzunluğu yakalayın.

Selam verdik borçlu çıktık :)

10.08.2020 12:19    

eglacier61
biraz öyle oldu ama temiz oldu.. çok teşekkür ederim :)

> 1 <
Copyright © 2004-2022 SQL: 1.539 saniye - Sorgu: 68 - Ortalama: 0.02263 saniye