Plinth yükseklik ölçeği

  • Konuyu başlatan Konuyu başlatan Cristallo
  • Başlangıç tarihi Başlangıç tarihi

Cristallo

Guest
1725272630397.pngI made a chaplaint: Ben kaba bir dtm almak gerekir, tüm yüksek z 0,00'de olan seviye eğrilerden başlayarak. Bir tanesi onları sahip oldukları yükseklike getirdim, başlangıç tasarımının ölçek 1:2000 olduğunu fark etmek dışında, yüksekliklerim hepsini 100'e koydum.
Bu noktada 100/2000 oranın tüm yüksekliklerini ölçeklendirmeliyim.
Bir ad hoc lisp yazdım
Kod:
(defun c: elevscale ()

(princ "\nselezionare polilinee:")
(setq entit (sget '(0 . "poliline"))))

(setq numarası (sslong entit)

(setq ölçekaxy (gerçekten "\nscala di disegno akciğero x-y: ")))
(setq scalaz (gerçek "\nscala di disegno akciğero z: "))
(setq rapporto (/ scalaz ölçekaxy))

(setq count 0)

(repeat numarası

(setq emod (isim entit count)
(setq pickv (asc '38 (enget emod)))
(setq eylemi-elev (cdr (assoc '38)))
(setq new-elev (* act-elev Rapporto))
(setq el-nw (kons '38 yeni-elev)))
(setq emodif (subst el-nw pickv)
(setq modi (cdr)
(entupd mod)
(setq count (+ count 1)
);chiusura tekrarlanır
);chiusura defun
Çok acımasız, ama istediğim şeyi yapmalısın. Ama bunu çeviremiyorum. Entupd çağrısı yanlış gidiyor.
Beni neyin yanlış olduğumu söyleyen bir aziz var mı?
 
Lisp'i görmek için zamanım yok ama sana başka bir yöntem öneririm.
eğrilerin bir blok oluşturur. Ardından blok z ölçeği faktörünü 1'den 0.05'e değiştirir. Sonra bloğu patladı
 
Bunu düşündüm ama eğer dışarı çıkmıyorsam toplar patlayacaktı. Her durumda, çok az zarif bir şekilde (kesinlikle efficent söylerdim), eski bir varlık tarafından takip edilen yeni varlığın yeniden gerçekleştirilmesini sağladım.
Uygulamada "copio", yeni hesaplanan yükseklik ile pline ve elde edilenden birini ortadan kaldırır.
 
Merhaba, "yönetici" yeni yükseliş setpropertyvalue:
Kod:
(defun c:elevscale ()

(princ " polilines:")
(setq varlıkları)

(setq numarası (sslong entit)

(setq ölçekaxy (getreal "\nscale Drawing long x-y: ")
(setq scalaz (getreal)
(setq raporu ( / ölçekaz ölçekaxy)

(setq count 0)

(repeat numarası)

(setq emod (isim entit count)
(setq elev (uygunluk)
(setq yeni-elev (* elev raporu)
(setpropertyvalue emod "elevation" yeni-elev)
(setq count (+ count 1))
); Tekrar kapatma
); defunct kapanış
... biraz Konforunuz:
Kod:
(defun c:elevscale ()

(princ " polilines:")
(setq varlıkları)

(setq ölçekaxy (getreal "\nscale Drawing long x-y: ")
(setq scalaz (getreal)
(setq raporu ( / ölçekaz ölçekaxy)

(s (setq count (slong entit))
(setq emod (isim entit (setq count (1- count)))
(setq elev (uygunluk)
(setq yeni-elev (* elev raporu)
(setpropertyvalue emod "elevation" yeni-elev)
)
)
 
Deneyin.
Söylemek için hiçbir şey kalmadı. verimli ve zarif.
Teşekkür ederim.
 

Forum İstatistikleri

Konular
58,521
Mesajlar
499,056
Kullanıcılar
104,110
Son Üye
ChristianR

Çevrimiçi Üyeler

Şu anda çevrimiçi üye yok.
Geri
Üst