08.02.2011 06:17    

allengir
Mehmet şahin güvercin hocam'ın ellerine sağlık.
lispi yükleyince command:weight yazın 3d objenizi seçin kg olarak size ağırlığı versin. lisp aşağıda

Kod:

(defun c:weight (/ agrlk)
  (setq agrlk (* (/ (nth 0 (dos_massprops (car (entsel "\nselect a solid:")))) 1000) 0.  00785))
  (princ (strcat "\nseçilen objenin ağırlığı: " (rtos agrlk) " kg.  "))
  (prin1)
)
(setq platform (getvar "platform")
      platform (substr platform (- (strlen platform) 2) 2)
      bd:acad_ver (substr (getvar "acadver") 1 2))
(cond ((= bd:acad_ver "15") (if (not (member "doslib15.  arx" (arx))) (arxload "doslib15.  arx")))
      ((= bd:acad_ver "16") (if (not (member "doslib16.  arx" (arx))) (arxload "doslib16.  arx")))
      ((= bd:acad_ver "17") (if (= platform "64")
                              (if (not (member "doslib17x64.  arx" (arx)))
                                (arxload "doslib17x64.  arx"))
                              (if (not (member "doslib17.  arx" (arx)))
                                (arxload "doslib17.  arx"))))
      ((= bd:acad_ver "18") (if (= platform "64")
                              (if (not (member "doslib18x64.  arx" (arx)))
                                (arxload "doslib18x64.  arx"))
                              (if (not (member "doslib18.  arx" (arx)))
                                (arxload "doslib18.  arx")))))

ehya (08.02.2011 06:58 GMT)

08.02.2011 06:59    

ehya
Şahin hocamın yazdığı bu lispi çalıştırmak için yamaları gerekir. doslib dosyaları olmadan bu lispi çalıştıramazsınız. . .

09.02.2011 06:06    

allengir
Doğru. Doslib dosyalarını burada yayınlayabiliyormuyuz?

09.02.2011 09:08    

ProhibiT
Doslib dosyaları -. arx formatında freeware yazılımlar olup robert mcneel & associates'in sitesinden indirilebilir.
autolisp kodunda görülen, bilgisayar işlemci türü ve işletim sistemi ile autocad versiyonunu tanıyıp bunlara göre uygun doslib. arx dosyasını yükleyen bölüm, mehmet şamil hocamızın bana gönderdiği bir fonksiyondan düzenlenmiştir.

fonksiyonun son halini tekrar paylaşmak isterim:
Kod:

(defun c:weight (/ agrlk yyuk yyeri)
  (setvar "cmdecho" 0) (command "undo" "group")
  (setvar "modemacro" "prepared by:m.  s.  güvercin")
  (setq platform (getvar "platform")
        platform (substr platform (- (strlen platform) 2) 2)
        bd:acad_ver (substr (getvar "acadver") 1 2))
  (cond ((= bd:acad_ver "15") (if (not (member "doslib15.  arx" (arx)))
           (if (findfile "doslib15.  arx") (arxload "doslib15.  arx")
             (progn (princ "\n*** doslib15.  arx bulunamadı!") (exit)))))
        ((= bd:acad_ver "16") (if (not (member "doslib16.  arx" (arx)))
           (if (findfile "doslib16.  arx") (arxload "doslib16.  arx")
             (progn (princ "\n*** doslib16.  arx bulunamadı!") (exit)))))
        ((= bd:acad_ver "17") (if (= platform "64")
           (if (not (member "doslib17x64.  arx" (arx)))
             (if (findfile "doslib17x64.  arx") (arxload "doslib17x64.  arx")
               (progn (princ "\n*** doslib17x64.  arx bulunamadı!") (exit)))
             (if (not (member "doslib17.  arx" (arx)))
               (if (findfile "doslib17.  arx") (arxload "doslib17.  arx")
                 (progn (princ "\n*** doslib17.  arx bulunamadı!") (exit)))))))
        ((= bd:acad_ver "18") (if (= platform "64")
           (if (not (member "doslib18x64.  arx" (arx)))
             (if (findfile "doslib18x64.  arx") (arxload "doslib18x64.  arx")
               (progn (princ "\n*** doslib18x64.  arx bulunamadı!") (exit))))
           (if (not (member "doslib18.  arx" (arx)))
             (if (findfile "doslib18.  arx") (arxload "doslib18.  arx")
               (progn (princ "\n*** doslib18.  arx bulunamadı!")))))))
  (if (= eyuk nil) (setq eyuk (* (getvar "dimtxt") (getvar "dimscale"))))
  (setq yyuk (getreal (strcat "\nyazi yuksekligi <" (rtos eyuk) "> :")))
  (if (= yyuk nil) (setq yyuk eyuk) (setq eyuk yyuk))
  (while (setq mlzm (car (entsel "\nselect a solid:")))
    (setq agrlk (* (nth 0 (dos_massprops mlzm)) 7.  85e-006)
          yyeri (getpoint "\n   select a point for the weight text"))
    (if (< agrlk 1.  0)
      (setq agrlk (strcat "0" (rtos agrlk 2 3)))
      (setq agrlk (rtos agrlk 2 3)))
    (entmake (list (cons 0 "text") (cons 10 yyeri) (cons 11 yyeri)
                   (cons 40 yyuk) (cons 50 0) (cons 72 1) (cons 1 agrlk))))
  (dos_clipboard agrlk)
  (setvar "modemacro" "") (command "undo" "e") (prin1)
)
bu haliyle fonksiyon hesaplanıp yazdırılan ağırlık değerini windows clipboard'a alır, gerek autocad ve gerekse başka bir programda paste/yapıştır işlemiyle kullanılabilir. doslib dosyalarının yüklenişi sırasında hata kontrolü de eklendi.

library ve autolisp dosyalarının tamamını indirmek için: 174410-agirlik.rar

kolay gelsin.

admin (15.07.2011 14:04 GMT)

15.07.2011 09:16    

SENDUR
Hocam elimde bir çok "solid obje" var ve hespinin toplam ağırlını bir kerede bulmak istiyorum. sizin bu yazdığınız lispi çoklu seçim yapabilecek şekilde değiştirmemiz mümkünmüdür?
saygılar

15.07.2011 12:20    

ProhibiT
Kod:

(defun c:weight (/ platform bd:acad_ver mlzm agrlk yyuk yyeri)
  (setvar "cmdecho" 0) (command "undo" "group")
  (setvar "modemacro" "Prepared by:M.S.Güvercin")
  (setq platform (getvar "platform")
        platform (substr platform (- (strlen platform) 2) 2)
        bd:acad_ver (substr (getvar "acadver") 1 2))
  (cond ((= bd:acad_ver "15") (if (not (member "doslib15.arx" (arx)))
           (if (findfile "doslib15.arx") (arxload "doslib15.arx")
             (progn (princ "\n*** doslib15.arx bulunamadı!") (exit)))))
        ((= bd:acad_ver "16") (if (not (member "doslib16.arx" (arx)))
           (if (findfile "doslib16.arx") (arxload "doslib16.arx")
             (progn (princ "\n*** doslib16.arx bulunamadı!") (exit)))))
        ((= bd:acad_ver "17") (if (= platform "64")
           (if (not (member "doslib17x64.arx" (arx)))
             (if (findfile "doslib17x64.arx") (arxload "doslib17x64.arx")
               (progn (princ "\n*** doslib17x64.arx bulunamadı!") (exit)))
             (if (not (member "doslib17.arx" (arx)))
               (if (findfile "doslib17.arx") (arxload "doslib17.arx")
                 (progn (princ "\n*** doslib17.arx bulunamadı!") (exit)))))))
        ((= bd:acad_ver "18") (if (= platform "64")
           (if (not (member "doslib18x64.arx" (arx)))
             (if (findfile "doslib18x64.arx") (arxload "doslib18x64.arx")
               (progn (princ "\n*** doslib18x64.arx bulunamadı!") (exit))))
           (if (not (member "doslib18.arx" (arx)))
             (if (findfile "doslib18.arx") (arxload "doslib18.arx")
               (progn (princ "\n*** doslib18.arx bulunamadı!")))))))
  (if (= eyuk nil) (setq eyuk (* (getvar "dimtxt") (getvar "dimscale"))))
  (setq yyuk (getreal (strcat "\nYazi yuksekligi <" (rtos eyuk) "> :")))
  (if (= yyuk nil) (setq yyuk eyuk) (setq eyuk yyuk))
  (princ "\nSelect solid(s): ")
  (while (setq mlzm (ssget (list (cons 0 "3DSOlid"))))
    (setq L (sslength mlzm) n -1 agrlk 0)
    (while (< (setq n (1+ n)) L)
      (setq agrlk (+ agrlk (* (nth 0 (dos_massprops (ssname mlzm n))) 7.85e-006))))
    (setq yyeri (getpoint "\n   Select a point for the Weight Text"))
    (if (< agrlk 1.0) (setq agrlk (strcat "0" (rtos agrlk 2 3))) (setq agrlk (rtos agrlk 2 3)))
    (entmake (list (cons 0 "TEXT") (cons 10 yyeri) (cons 11 yyeri)
                   (cons 40 yyuk) (cons 50 0) (cons 72 1) (cons 1 agrlk)))
    (princ "\rSelect solid(s): "))
  (setvar "modemacro" "") (command "undo" "e") (prin1)
)

15.07.2011 12:30    

SENDUR
Hocam çok teşekkürler. elleriniz dert görmesin.

22.07.2011 19:42    

ProhibiT

22.02.2012 08:27    

ProhibiT
3DSolid Objelerin Ağırlığını Hesaplayıp Yazan Lisp fonksiyon, dos_lib kullanmadan çalışacak şekilde düzenlendi. Kodlar ve dosya daha sade ve küçük hale geldi. Son halini sitemiz download bölümünden indirebilirsiniz. 3d Solid Objelerin Ağırlığını Hesaplayıp Yazan Lisp

22.02.2012 09:43    

k005
Alıntı
ProhibiT :
3DSolid Objelerin Ağırlığını Hesaplayıp Yazan Lisp fonksiyon, dos_lib kullanmadan çalışacak şekilde düzenlendi. Kodlar ve dosya daha sade ve küçük hale geldi. Son halini sitemiz download bölümünden indirebilirsiniz. 3d Solid Objelerin Ağırlığını Hesaplayıp Yazan Lisp




Hocam çok kullanışlı bir lisp olmuş.., Teşekkürler..

22.02.2012 12:26    

arif35
ben lisp kullanmadım hiç yukarıda verilen lispi kopyaladım ancak nasıl çalıştırılacağını bilmiyorum. yardım etmek isteyen arkadaşlara elimi uzattım.

22.02.2012 14:03    

ProhibiT


Linkleri görebilmek için ÜYE olmalısınız.




Linkleri görebilmek için ÜYE olmalısınız.

Linklerinde sorunuzun cevabı var.

Burada paylaşılan fonksiyon üzerinden gidip örneklersek;

-

Linkleri görebilmek için ÜYE olmalısınız.

linkinden Agirlik.rar dosyasını indirin.
- _.rar dosyasının içindeki Agirlik.Lsp dosyasını AutoCAD ...\Support klasörüne çıkarın.
- _.rar dosyasının şifresi autocadokulu.com
- AutoCAD komut satırından AppLoad girin.
- Agirlik.Lsp dosyasını bulup Load butonuna tıklayın.
- OK butonuna tıklayıp AppLoad diyalog penceresini kapatın.

______________________________________________
Command: appload
Agirlik.Lsp successfully loaded.

Command:
Command Name: AgrLk
Author: ©M.Şahin Güvercin (ProhibiT®) - www.autocadokulu.com
Command:
______________________________________________

şeklinde fonksiyonun yüklendiğini gösteren mesajlar görüntülenecektir.

Bundan sonra AGRLK isimli yeni komutunuz kullanıma hazırdır.

07.05.2012 15:16    

KADIKIZI
Öncelikle çok çok teşekkürler. emeginize ellerinize saglık :D
Lisp konusunu çok iyi anlayamadıgımdan sanırım bazı lispler çalışıyor kullanabildim ama agırlık lispini kullanamadım. ve
merakıma yenilip bir soru sormak istiyorum ahşap - kompozit - aluminyum - çelik - vs bunların özgül agırlıkları vs farklı bunları nasıl algılatabiliyoruz. bu nedenle kullanamamış olablir miyim?

iyi çalışmalar.

07.05.2012 17:12    

ProhibiT
Öncelikle fonksiyonun son halini

Linkleri görebilmek için ÜYE olmalısınız.

linkinden indirin.

Özgül ağırlık değerinin kullanıcı tarafından girilmesi gerekiyor.
Özgü ağırlık birimini çevirmeye çalışmayınız, bildiğiniz, bulabildiğiniz birimde girebilirsiniz.
Özgül Ağırlık, gr/mm³, gr/cm³, gr/m³, kg/mm³, kg/cm³, kg/m³, T/mm³, T/cm³ veya T/m³ birimlerinden birinde olabilir.

Fonksiyon 3DSoLid objenin hacmini kullanıcının belirlediği çizim biriminde hesaplar.
Çizim birimi, mm., cm. veya m. olabilir.

Sonuçta hesaplanan ağırlık gene kullanıcının belirlediği birimde yazılır.
Ağırlık birimi, gr., kg. veya Ton olabilir.

Fonksiyon gerekli birim çevirme işlemlerini sizin adınıza yaparak sonuçları istediğiniz formatta yazar. Görüldüğü gibi son derece kullanıcı dostu (user friendly) bir fonksiyondur. Burada bahsedilen birim ve değerleri karşınıza gelecek diyalog kutusundan kolayca yapabilirsiniz.

Çelik için; 7.86 gr/cm³.
Ahşap için; doğal ahşabın cinsine göre 600~800 kg/m³.
Alüminyum için; 2.699 gr/cm³.

değerlerini alabilirsiniz.

Bundan sonra 3DSoLid objeleri çizerken kullandığınız Uzunluk birimini doğru olarak girmelisiniz.
Sonuçları hangi birimde istiyorsanız, gr., kg. veya Ton. olarak yazdırabilirsiniz.

10.05.2012 10:46    

KADIKIZI
:D çok teşekkür ederim.

24.07.2017 11:51    

SENDUR
Hocam merhaba;
Ben autocad e bir müddet ara verdim 3-4 yıl kadar ( üniversiteye gittim tekrardan) suan 2016 yüklü ve bu lispi çalıştıramadım. Affınıza sığınarak yardım istiyorum. Şu hatayı veriyor. Eskiden bunun doslips lisini kullanıyordum. şimdi onuda kullanamıorum




Command: AGRLK
//--------------------=={ 3dkg.dcl Dialog Definition }==--------------------//
// Author: M. Sahin Guvercin, Copyright © 2012 //
// www.autocadokulu.com //
//---------------------------------------------------------------------------//
wght:dialog{
label="**** 3DSolid Objelerin Ağırlık Hesabı ****";
: boxed_column{
: popup_list{alignment=centered;label=" Özgül Ağırlık Birimi:";
key="Bhb";edit_width=10;
list="\ngr/mm³\ngr/cm³\ngr/m³\nkg/mm³\nkg/cm³\nkg/m³\nT/mm³\nT/cm³\nT/m³";}
: edit_box{alignment=centered;label=" Özgül Ağırlık Değeri:";
key="Bha";edit_width=11;}
: popup_list{alignment=centered;label=" Kullanılan Uzunluk Birimi:";
key="Len";edit_width=10;list="\nmm.\ncm.\nm.";}
: popup_list{alignment=centered;label="Hesaplanacak Ağırlık Birimi:";
key="Wei";edit_width=10;list="\nGr.\nKg.\nT.";}
: edit_box{alignment=centered;label=" Yazı Yüksekliği:";
key="Yzy";edit_width=11;}
: edit_box{label="Ondalık Basamak Sayısı:";key="dpL";edit_width=11;}
spacer;spacer;}
: boxed_row{: text{key="CpR";value=
" Hazırlayan:M.Şahin Güvercin - www.autocadokulu.com"
;}}ok_cancel;}

Cannot invoke (command) from *error* without prior call to (*push-error-using-command*).
Converting (command) calls to (command-s) is recommended.

Saygılar emeğinize sağlık

25.07.2017 10:07    

ProhibiT
Merhaba,

Son iki satırlık hata mesajı bu programın neden olduğu bir hataya benzemiyor.
Çünkü kodlara yeniden baktım Pushveya Pop error using kullanılmamış.

Diğer hataya gelince, sanıyorum gene aynı durumla karşı karşıyayız.

AutoCAD klasörlerinde yeterli erişim yetkisine sahip değilseniz, kendi -.dcl dosyasını oluşturmaya çalışırken, yetkisizlik nedeniyle dosyaya yazamayınca ekran yazıyor -.dcl satırlarını.

Bunun çözümü, AutoCAD klasörlerinde, ki burada ...\AutoCAD XXXX\Support klasörü kullanılmaya çalışıyor, kendinize tam erişim yetkisi almanızdır. Daha basit ve ilkel çözümü: AutoCAD'i Yönetici/Administrator olarak çalıştırmak...

Kolay gelsin

> 1 <
Copyright © 2004-2022 SQL: 1.658 saniye - Sorgu: 90 - Ortalama: 0.01842 saniye