Copyright © 2004-2022 SQL: 1.465 saniye - Sorgu: 99 - Ortalama: 0.0148 saniye
23.02.2013 07:29
ehya |
çıkarmak istediğin elemanları sırası ile ssdel komutunu kullanarak istediğin listeden çıkaracaksın.
örneğin; secim-1 --> 10 eleman secim-2 --> 5 eleman Kod: (setq c 0)
(repeat (sslength secim-2) (ssdel (ssname secim-2 c) secim-1) (setq c (+ c 1)) )
|
23.02.2013 07:53
Travaci |
Teşekkürler.
|
23.02.2013 08:08
ProhibiT |
Daha önce paylaştığım AcxL isimli fonksiyonun bir bölümü açarak incelemekte fayda var.
Kod: (setq yz (ssget '((-4 . "<OR") (0 . "*text,Line,*Polyline") (-4 . "<AND") (0 . "Insert") (66 . 1) (-4 . "AND>") (-4 . "OR>"))) n -1 cz (ssadd)) (while (< (setq n (1+ n)) (sslength yz)) (if (wcmatch (cdr (assoc 0 (entget (setq pv (ssname yz n))))) "*LINE") (setq cz (ssadd pv cz) yz (ssdel pv yz) n (1- n)))) - Excel dosyasına aktarılacak tablo elemanlarının tümünü seçiyoruz. - Seçilen elemanlar, Line, Polyline, Lwpolyline, Text, Mtext ve Attibute içeren Insert Objeleri'dir. - Seçilen objeler başlangıçta yz isimli değişkene (yz=yazı, tablonun veri türü objeleri) alınıyor. - Bu seçim setinde obje türü adında "*line" bulunan objeler, yani Line, Polyline, Lwpolyline olanlar, yz'den silinip, cz (cz=çizgi, tablonun ve hücrelerin sınırlarını belirleyen objeler) seçim setine ekleniyor. - işlemin sonunda türlerine göre ayrılmış yz ve cz isimli iki seçim seti elde ediyoruz.
|
23.02.2013 08:15
Travaci |
Teşekkürler.
|
23.02.2013 10:01
kerem1453 |
(command "_.scale" "w" ksolust ksagalt "yn" "2" "") bu kodla scale yap w ile ksolust noktası ile ksaglat köşesi arasında kalan objeleri yn noktasıntan 2 kat büyüt demek istedim ama objeyi seciyor ama büyütme işlemini yapmıyor hata bu kodlamada nerde ustalarımızdan biri bakarda yanıtlarsa sevinirim.
|
23.02.2013 10:10
ehya |
kerem1453
iki nokta gösteriminden sonra "" ifadesini kullanın. Nokta gösteriminden sonra referans koordinat belirleyin. "yn" ifadesi nedir? Bu şekilde yazım, scale komutu içerisinde yn adlı bir alt komut olduğunu ifade eder. Bir sayısal değer verirken de bu tırnak içinde yazılmaz... yani şu şekilde yazılabilir. Kod: (command "_.scale" "w" ksolust ksagalt "" (polar ksolust (angle ksolust ksagalt)(/ (distance ksolust ksagalt) 2.0)) 2)
|
23.02.2013 10:20
kerem1453 |
yn scale yapacagım ogjenin tutmasını istedigim noktası ehya.tşk ederim yardımın için.
|
23.02.2013 10:28
ehya |
o zaman yn değerini tırnak içinde yazamazsınız. Eğer tırnak içinde olursa bir önceki mesajımda söylediğim gibi scale komutunun alt komutu olarak algılar. Bu da komutun hatalı olmasına neden olur.
koordinat değerlerini nasıl aldığınızı bilmediğim için farklı yazım örneklerinde bulunamıyorum. Eğer ki, nokta gösterimlerinin ikisini de getpoint ile yaptırdıysanız, bu görsel olarak yetersiz bir işlem olacaktır. Böyle bir durumun olacağını düşünerek ilkinde getpoint, ikincisi işlemde ise getcorner komutunu kullanın.. Örnek : Kod: (setq a (getpoint) b (getcorner a)) Bu örnekte açılan pencerenin görüntüsünü de göreceksiniz. İlk koordinat a değişkeninde, ikinci koordinat b değişkeninde saklanır.
|
23.02.2013 10:31
kerem1453 |
40*40 cizdirdigim bir objeyi 2 kat büyüt demek istemiştim yn tutmasını istedigim objenin kesişim noktası bu kodlamayı uyguladıgımda 2 kat değilde 4 kat büyütüyo istedigim şekle göre bi kodlama daha yazabilirsen ehya çok sevinirim.(distance ksolust ksagalt) 2.0)) bu kısmı (distance ksolust ksagalt) 1.0)) yaptıgımda 2 kat büyütme oldu yn yani tutmasını istedigim noktasını nereye yazmam gerekekiyo.
|
23.02.2013 11:03
ehya |
Bir yanlışınız var.
Önceki mesajımda yazdığım kod 2 kat büyütme yapar. Sormuş olduğunuz kod bölümü tek parça olarak ele alınmaz. Açıklamak gerekirse, Kod: (polar ksolust (angle ksolust ksagalt)(/ (distance ksolust ksagalt) 2.0)) bu kod, gösterilen iki noktanın ortasını tutmak için kullanılır. Yani sizin yn adını verdiğiniz noktayı bu kodlama otomatik olarak hesaplar. polar komutu, bir noktanın açıya bağlı olarak istenilen mesafedeki koordinatını verir. Burada önce açıyı bulmak gerekiyor. Bunu da, Kod: (angle ksolust ksagalt) komutuyla radyan cinsinden öğrendik. polar komutu açı değerini derece değil, radyan cinsinden kabul eder. Ardından iki nokta arasındaki mesafenin ortasını bulmak gerekiyor. Kod: (/ (distance ksolust ksagalt) 2.0) Bu kod ile de, iki nokta arasındaki mesafe bulunup yarısı alınıyor. Kodlar birleştirildiğinde iki noktanı orta noktasının koordinatı veriliyor. Ancak siz bu değeri kullanmak değil de, kendi yn değerindeki koordinatı kullanacak iseniz, yazmanız gereken kod; Kod: (command "_.scale" "w" ksolust ksagalt "" yn 2) şeklinde olacaktır.
|
23.02.2013 23:17
kerem1453 |
tşkler ehya açıklamalar ve yardımın için..
|
24.02.2013 21:13
kerem1453 |
Error: no function definition: MINI daha önce çalışan lisplerimden biri bu hatayı vermeye başladı sebebi ne olabilir lispin içeriginde hiç bi değişiklik yapmadım.hatta açmadım bile lispi bu hatayı vermeye başladı.sebebi ne olabilir ?
|
25.02.2013 07:21
Travaci |
Nedenin neyden kaynaklandığını bilmiyorum ama hatayı sonradan vermeye başlamaz, bazen banada oluyor, yazarken sürekli üst üstde denemeler sonucu çalışıyor, bir sonraki denemede önceki doğrular yeni hatalrı kapatıyor sanırım : ) Autocad'i kapatıp açtığımda çalışmıyor.
|
27.02.2013 23:15
Travaci |
(command "ucs" "name" "save" isim "") dıyınce aynı ısımde varsa uzerıne yazıyım mı sorusunu soruyor
aynı ısımde varsa uzerıne yaz yoksa, ısleme devam edıp ısım adlı ucsyı olustur nasıl derız. Tesekkurler
|
28.02.2013 09:30
Harbi65 |
Alıntı Kontrol etmek için önce mevcut ucsname listesini alman lazım. Bu listeye göre de kontrol yaparsın. Kod: (defun c:UCL (/ u u:cs)
(setq u T ucs:lst '()) (while (/= (setq u:cs (cdr (assoc 2 (tblnext "UCS" u)))) nil) (setq ucs:lst (cons u:cs ucs:lst) u nil) ) (if (member isim ucs:lst) (progn ;Var. üzerine yazdır ) (progn ;Yok. yeni kayıt ) ) (princ) )
|
01.03.2013 21:56
Travaci |
Aşağıda istenilen poz numarası bulunamadığında, "Aranan poz no bulunamadı!" uyarısını veremedim.
Kod: (defun c:PsEc (/ cc ps ad gr pz pc f) (setq cc (rtos (getreal "\nSeçilecek Poz No:") 2 0) ps (ssget "x" (list (cons 0 "INSERT") (cons 2 "KESIT_POZ"))) ad (sslength ps) gr (ssadd) f 0) (while (< f ad) (setq pz (ssname ps f) Pc (cdr (assoc 1 (entget (entnext pz))))) (if (/= pc cc) (progn) (progn (ssadd pz gr))) (setq f (+ f 1))) (sssetfirst nil gr) (prin1) ) Teşekkürler
|
02.03.2013 07:29
pulp fiction |
Alıntı hocam eline koluna sağlık. çok teşekkürler. bunu seçmeli yapabiliyormuyuz. bi dosyada 30 tane paftam oluyor ama ben 1 paftada aramak istiyorum mesela.. bi de hocam sana gönderdiğim şeyde L BOY yazan kısımda da aradığımız şey bulabiliyor muyuz? mesela donatının uzunluğu 970. L=970 yazan yerde ben 970 yazarak bütün 970leri bulma dururumum var mı? çok çok teşekkür ederim vakit ayırdığın için...
|
02.03.2013 08:23
Travaci |
Bu kısmı
Kod: ps (ssget "x" (list (cons 0 "INSERT") (cons 2 "KESIT_POZ"))) Bu sekılde yaparsanız Kod: ps (ssget (list (cons 0 "INSERT") (cons 2 "KESIT_POZ"))) Sizden seçim ister. Kod: (defun c:LsEc (/ cc ps ad gr pz pc f)
(setq cc (rtos (getreal "\nAranacak L Boyu:") 2 0) ps (ssget (list (cons 0 "INSERT") (cons 2 "DLR01"))) ad (sslength ps) gr (ssadd) f 0) (while (< f ad) (setq pz (ssname ps f) Pc (cdr (assoc 1 (entget (entnext (entnext (entnext (entnext (entnext pz))))))))) (if (/= pc (strcat "L=" cc)) (progn) (progn (ssadd pz gr))) (setq f (+ f 1))) (sssetfirst nil gr) (prin1) ) Travaci (03.03.2013 19:47 GMT) |
15.03.2013 14:18
Harbi65 |
Herhangi bir txt dosyayı okuturken doğrudan belli bir satırı okutabilir miyiz?
Atıyorum 15. satırı okutmak istesem...
|
ehya |
Alıntı read-line kullanırken (repeat 15 yaparsan 15nci satırın sonucunu verecek.
|