21.12.2016 10:40    

waytooraider
Merhaba,
Seçtiğim textlerin yazısını attribute definitionla oluşturduğum tek taglı bir bloğa yazılmasını istiyorum.Bu şekilde o bloğu excele aktarabileceğim.Yardımlarınız için teşekkür ederim.

22.12.2016 18:56    

ProhibiT
Merhaba waytooraider :)
Yanılmıyorsam, Text veya Dimesion nesnelerinin değerini de Excel'e aktaran bir şeyler paylaşmıştık. Böyle bir istekte bulunduğunuza göre ki, gereksiz uçuk isteklerde bulunmayan bir arkadaşımızsınız, bir bildiğiniz, bir hedeflediğiniz olsa gerek. Amaç ve yönteminizi biraz daha açıklarsanız, çözüm üretmek zor olmasa gerek.

23.12.2016 05:29    

waytooraider
Hocam,mesajınızı görünce inanın bir çocuk gibi sevindim,Her zaman derim,Allah Sizi başımızdan eksik etmesin..Sayenizde inanılmaz verimli hızlı çalışıp,işimizi doğru yapmamıza vesile oluyorsunuz.

İlk mesajımı daha da detaylandıracak olursam,projede 100 tane FCU-1 texti,120 tane FCU-2 texti,25 tane FCU1 texti olsun.Find komutu ile FCU kelimesini arattırıp,create selection set (All) ile seçtikten sonra,bu textleri ald fonkisyonunda ki gibi ebl tarzında bir block oluşsun,bu block tek Attribute Definiton lı olabilir.Hocam,bildiğiniz üzere bu blockları excele aktarabiliyoruz.Bunu istememdeki amaç,bu bloğun içine girip,modifiye edebilirim,adet,mahal no vs gibi değişkenleri ekleyebilirim.Kalsik yöntem yerine,kağıt kalem excele yazacağıma,autocad'te bu tarz blockları kullanıyorum,metrajını aldığım nesneyi bu bloklarla belirtmiş oluyorum.

09.01.2017 00:20    

e-celebi
Sayın ProhibiT

Daha önce üye olmama rağmen yaklaşık 1 haftadır forumu etkin bir şekilde kullanmaktayım. Şimdiye kadar çok şey kaçırdığımı fark ettim. Zararın neresinden dönülürse kardır diyerek bundan sonra daha fazla yararlanmaya, bu konuda kendimi yeterli görmesem de elimden geldiğince de katkı sunmaya çalışacağım.
Öncelikle size ve şahsınızda bilgilerini paylaşan, sorulara yanıt veren herkese teşekkürlerimi sunmak isterim. Her şeyin metalaştığı bir dünyada sizler gibi insanları görmek insanlıktan daha umut kesilmeyeceğinin bir göstergesi olarak umudumu artırmaktadır. İyi ki varsınız.
İki gündür ald fonksiyonu lispinizi kullanmaktayım. Sayenizde bir yığın hamallıktan kurtulduk. Bu soruyu sormak için forumda epey araştırma yaptım sonunda waytooraider'in benim soruma benzer bir soru sorduğunu gördüm. Bundan cesaret alarak ilk mesajımı yazıyorum. Attribute içeren blokları Export Attributes komutuyla veri dosyası haline getirebiliyoruz. Excel vb programlarda bunları kullanabiliyor, yine bu programlarda aynı formatta veri dosyası haline getirerek Import Attributes komutuyla da çizime aktarabiliyoruz. Bu anlamda çizim içerisindeki aslında veri içeren textleri sadece excel'e aktarmanın ötesinde excel verileri ile çizim arasında dolaylı bir bağ oluşturuyoruz. Extract Data komutu ile de seçilen textleri geometrik verileriyle birlikte excele aktarabiliyoruz. Muhtemelen excel dosyası ile çizim dosyası arasında bir oluşturmanın da yöntemleri vardır.

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

başlığında benzer bir konu anlatılmış ama oradaki VBA kodunu çalıştıramadım maalesef. Bu yüzden benim istediğimi yapıp yapmadığını bilemiyorum.
Benim isteğim de waytooraider'inkine benzer şekilde. Çizimde seçilen textler Attributesi olan ve text ile aynı x, y, z değerine sahip ve aynı dönme açısına sahip bir bloğa dönüşsün.
Eğer fazla olmayacaksa bir isteğim daha olacak Forumda iki sayıyı toplayıp 3. sünün üzerine toplamı yazan lisp var. Aynı işlemi Attributes içeren bloklarda nasıl yapabiliriz? Yani sayıları blok Attribute lerinden alsın toplamını seçilen blok Attributesi olarak atasın. Eğer birden fazla Attributes varsa hangisinin toplanacağı seçilebilsin.

e-celebi (09.01.2017 00:27 GMT)

10.01.2017 10:07    

Travaci
waytooraider


e-celebi


Arkadaşlar istekte bulunurken bir dwg ile isteklerinizi yeşillendirin, her nekadar açıklamış olduğunuzu düşünsenizde yazar kimselerin aklında yanıtsız kalan sorular oluyor.

12.01.2017 20:42    

e-celebi
Aşağıdaki lispi bir başka forumda buldum. Adresini lisp dosyasının üst satırına ekledim. Benim isteklerimi % 90 karşılıyor. Seçtiğiniz text(ler)i lispte adı geçen bloğa Attributes olarak aktarıyor, sonrada siliyor. Bloğu istediiniz gibi özelleştirebiliyorsunuz. Lisp 3 tag'lı bir bloğa 3 texti aktarıyor. Bloğunuzdaki tag sayısına göre lisp düzenlenebilir. Lisp dosyasını ve içinde lispte adı geçen bloğuda içeren örnek dosyayı ekledim. umarım waytooraiderinde işine yarar.
Benim kullanımda görebildiğim eksiklik ve ilave edilebilecek özellikler;
- Insert edilen bloğun döndürülememesi. İnsert edilen bloğun dönme açısını seçilen (ilk) textden alacak bir kod ilavesi ile çok daha kullanışlı olabilir.
- Birden fazla tag içeren bloklarda ilk textden sonraki textler zorunlu olmayabilir. Yani text yerine boşluğa tıkladığımda o textin yerini boş bıraksın diğerine geçsin.
;;
;;
;define function - instbub, activate with ibb
(defun c:ibb ( )
;define picktext for use later in the script
(defun picktext () (setq en1 (car (entsel "\nSelect Unit text :" ))) (setq el1 (entget en1))
(if (= (cdr (assoc 0 el1)) "TEXT")
(setq ans (assoc 1 el1))
)
) ;end defun
(defun picktext2 () (setq en1 (car (entsel "\nSelect Type text :" ))) (setq el1 (entget en1))
(if (= (cdr (assoc 0 el1)) "TEXT")
(setq ans (assoc 1 el1))
)
) ;end defun
(defun picktext3 () (setq en1 (car (entsel "\nSelect Numb text :" ))) (setq el1 (entget en1))
(if (= (cdr (assoc 0 el1)) "TEXT")
(setq ans (assoc 1 el1))
)
) ;end defun
(command "osnap" "cen" )
;identify pt as insertion point for instbub
(while (setq pt (getpoint "\nPick Insertion Point:"))
;get unit name from a text element
(picktext)
(setq unitname ans)
;get instrument type from text element
(picktext2)
(setq insttype ans)
;get instrument number from text element
(picktext3)
(setq instnumb ans)
; insert a instrument bubble based on the information stored above
(command "attdia" "0" )
(command "-insert" "instrbub.DWG" "_NON" pt "1" "1" "0" (cdr unitname) (cdr insttype) (cdr instnumb) )
(command "osnap" "off" )
(setq old (ssget))
(command "ERASE" old "R" "L" "")
(command "osnap" "cen" )
(command "redraw" )
)
(princ)
)

365090-ibb.rar

e-celebi (14.01.2017 22:54 GMT)

20.04.2017 11:48    

waytooraider
Merhaba,
Alltaki lisp texti attribute bloğa çeviriyor.Lispi çalıştırmadan önce Justyfytext komutu ile textleri toplu olarak left'te çevirilmesi gerekiyor,
Lisp çalıştığında textler bloğa dönüşüyor ama ,textin rotationunu almıyor.Acaba Textin rotationunu alarak bloğa çevirilmesi mümkünmü?

Kod:

(defun C:tab  (/ *error* acsp adoc align attobj block_coll block_def bname bref
  en hgt msg name names orig pmt sset style tag txtobj txtval val)
  (vl-load-com)
  (defun *error* (msg)
    (if adoc (vla-endundomark  adoc))
    (if
      (and msg
    (not
      (member
        msg
        '("console break"
   "Function cancelled"
   "quit / exit abort"
   ""
  )
      )
    )
      )
       (princ (strcat "\nError: " msg))
    )
    (setvar "nomutt" 0)
   
   
    (princ)
  )
(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)
    )
    )
     )
(setq block_coll (vla-get-blocks adoc))
(vla-endundomark adoc)
(vla-startundomark adoc)
(while (tblsearch "BLOCK"
     (setq bname (getstring T "\nEnter block name: ")))
   (progn
     (alert "Block already exist, input another name")
     (setq msg "")
     (vlax-for obj  (setq names (vlax-map-collection block_coll 'vla-get-name))
       (setq name (vla-get-name obj))
       (if (not (wcmatch name "`**"))
  (setq msg (strcat msg (vla-get-name obj) "\n"))))
     (alert (strcat "Check existing blocks:\n" msg))))
(setvar "nomutt" 0)
(prompt
   "\nSelect a single text by single pick to get properies from\n")
(setvar "nomutt" 1)
(while (not
   (setq sset (ssget "_:S:L" (list (cons 0 "text")))))
   (alert (strcat "Select text again")))
(setq txtobj (vlax-ename->vla-object (ssname sset 0)))
(setvar "aflags" 4)
(setvar "attreq" 0)
(setvar "attdia" 1)
(setvar "nomutt" 0)
(prompt "\nCreating block with ActiveX method\n")
(setq orig (vlax-get txtobj 'insertionpoint)
       pmt  "Panel type"     ; prompt
       tag  "PANEL_TYPE"     ;tag
       val  (vlax-get txtobj 'textstring)   ;default value
       )
(setq hgt   (vlax-get txtobj 'height)
       style (vlax-get txtobj 'stylename)
       align (vlax-get txtobj 'alignment))
;; add block definition first
(setq block_def (vla-add block_coll (vlax-3d-point orig) bname))
;; change properties of the block definition
(vla-put-blockscaling block_def 1)
(vla-put-blockscaling block_def 1)
(vla-put-units block_def 1) ; possible enums: acInsertUnitsInches, acInsertUnitsUnitless, acInsertUnitsMillimeters, acInsertUnitsMeters, etc
;; add attribute
(setq attobj (vlax-invoke
  block_def
  'addattribute
  hgt
  acattributemodepreset
  pmt
  orig
  tag
  val))
;; change properties of the attribute
(vlax-put attobj 'alignment align)
(vlax-put attobj 'stylename style)
(vla-put-layer attobj "0")
(vlax-put attobj 'color 0)
(princ "\n")
(if (not (tblsearch "BLOCK" bname))
   (progn
     (alert "Error on  creating blocks")
     (exit)
     (princ))
   (progn
     (setvar "nomutt" 0)
     (prompt "\n\nSelect all texts to convert to blocks\n")
     (setvar "nomutt" 1)
     (if (setq tset (ssget "_:L" (list (cons 0 "text"))))
       (while (setq en (ssname tset 0))
  (setq txtobj (vlax-ename->vla-object en))
  (setq xlist (cons txtobj xlist))
  (setq orig (vlax-get txtobj 'insertionpoint))
  (setq txtval (vla-get-textstring txtobj))
  (setq orig (vlax-get txtobj 'insertionpoint))
  (setq bref (vlax-invoke acsp 'insertblock orig bname 1 1 1 0))
  (foreach attobj  (vlax-invoke bref 'getattributes)
    (if (eq tag (vla-get-tagstring attobj))
      (vla-put-textstring attobj txtval)
      (vla-update attobj))
    )
  (ssdel en tset)
  (entdel en)
  )
       )
     (setvar "nomutt" 0)
     )
   )
(vl-catch-all-apply
   '(lambda () (vlax-release-object block_def)))
(*error* nil)
(princ)
  )   
(princ "\n\t\t   Start command with: AXBT\n")
(prin1)

waytooraider (04.05.2017 12:17 GMT)

> 1 <
Copyright © 2004-2022 SQL: 1.156 saniye - Sorgu: 64 - Ortalama: 0.01806 saniye