Đến nội dung


Hình ảnh
* * * - - 8 Bình chọn

Viết lisp theo yêu cầu [phần 2]


  • Chủ đề bị khóa Chủ đề bị khóa
3783 replies to this topic

#3001 namdaica

namdaica

    Chưa sử dụng CAD

  • Members
  • Pip
  • 2 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 08 January 2011 - 11:31 AM

Chào các bạn.Các bạn có thể cho minh xin list tinh diện tich bằng cách kich vào vùng cần chọn sau đó thay vào giá trị cần thay đổi không.
Ví dụ mình tính diện tích vùng cần chọn bị sai là 15m2 bây h mình dung list tính diện tích tính lại là 16m2 và mình muốn thay số 15m2 thành 16m2 được không các bạn.
Tương tự list tính tổng cộng các đoạn PLine và cộng thêm một giá trị bất kỳ sau đó cũng thay số cần tính vào số bị sai.
Mong các bạn giúp em.Thank all
  • 0

#3002 prisonescapes

prisonescapes

    Chưa sử dụng CAD

  • Members
  • Pip
  • 3 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 08 January 2011 - 11:41 AM

nhờ các bác viết dùm lisp cố định diện tích

vd có cái mb hình chữ L không hiểu có cái lisp nào cố định được diện tích pline bo ngoài mặt bằng, mà khi kéo 1 trong các điểm trên pline thì các điểm hay cạnh lân

cận tự động thay đổi mà vẫn giữ nguyên dt pline ban đầu. nếu chỉ định được cho phép thay đổi độ dài cạnh theo trục của nó thì tốt quá :D
  • 0

#3003 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 09 January 2011 - 06:48 PM

nhờ các bác viết dùm lisp cố định diện tích

vd có cái mb hình chữ L không hiểu có cái lisp nào cố định được diện tích pline bo ngoài mặt bằng, mà khi kéo 1 trong các điểm trên pline thì các điểm hay cạnh lân

cận tự động thay đổi mà vẫn giữ nguyên dt pline ban đầu. nếu chỉ định được cho phép thay đổi độ dài cạnh theo trục của nó thì tốt quá :D

Híc ngày càng nhiều... yêu cầu oái oăm...
  • 0
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#3004 namdaica

namdaica

    Chưa sử dụng CAD

  • Members
  • Pip
  • 2 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 09 January 2011 - 07:05 PM

Nhờ các bạn viết cho mình cái lisp nay.
Yêu cầu:
- Tổng cộng các line,pline... lại vơi nhau
- Sau đó cộng thêm một giá trị bất kỳ vào tổng các đoạn thẳng đó
- Lấy kết quả đó Edit vào text đã có.
Mong các bạn giúp mình. Thank alll.
  • 0

#3005 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 10 January 2011 - 12:49 PM

Híc ngày càng nhiều... yêu cầu oái oăm...

Bác đã ngó qua cái yêu cầu cắt chân dim của dim đã oblique của e chưa ạ ^^

P/S : có hàm nào lấy tọa độ mouse hok các bác nhỉ? Nhìn cái status bar mà bực quá,k tài nào mần được ^^
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3006 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 10 January 2011 - 01:04 PM

..........
P/S : có hàm nào lấy tọa độ mouse hok các bác nhỉ? Nhìn cái status bar mà bực quá,k tài nào mần được ^^

Dùng hàm grread
Tham khảo : Vẽ Pline vuông góc
  • 1

#3007 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 10 January 2011 - 08:13 PM

Bác đã ngó qua cái yêu cầu cắt chân dim của dim đã oblique của e chưa ạ ^^

P/S : có hàm nào lấy tọa độ mouse hok các bác nhỉ? Nhìn cái status bar mà bực quá,k tài nào mần được ^^

Anh mới cài cad2011 trả biết cái Oblique nó ở chỗ nào để test thử nữa quê quá....Còn toạ độ mouse thì dùng grread như Bác gia_bach đã nói.
  • 0
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#3008 shitty

shitty

    biết zoom

  • Members
  • Pip
  • 19 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 12 January 2011 - 09:49 AM

e là thành viên mới tham gia diễn đàn...e rất gà cad...e cung tham khao trên diễn đàn lisp về hatch : h e muốn làm thế nào ma hatch xong thi nó sẽ tự chuyển về layer ví dụ nhu "00-09hatch"...mong các cao thủ giúp e...
;;; =========================== HATCH =================================
HATCH
(defun c:H0 () (command "Bhatch" "P" "pattern" "solid"))
(defun c:Ht () (command "Bhatch" "P" "pattern" "ANSI31" "450" ""))
  • 0

#3009 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 12 January 2011 - 10:01 AM

e là thành viên mới tham gia diễn đàn...e rất gà cad...e cung tham khao trên diễn đàn lisp về hatch : h e muốn làm thế nào ma hatch xong thi nó sẽ tự chuyển về layer ví dụ nhu "00-09hatch"...mong các cao thủ giúp e...
;;; =========================== HATCH =================================
HATCH
(defun c:H0 () (command "Bhatch" "P" "pattern" "solid"))
(defun c:Ht () (command "Bhatch" "P" "pattern" "ANSI31" "450" ""))

Ý bạn là hatch bằng layer 00-09hatch, hatch xong trả về layer cũ hay hatch bằng layer hiện tại, hatch xong trả về layer 00-09hatch ??
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3010 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 12 January 2011 - 11:37 AM

Nhờ các bạn viết cho mình cái lisp nay.
Yêu cầu:
- Tổng cộng các line,pline... lại vơi nhau
- Sau đó cộng thêm một giá trị bất kỳ vào tổng các đoạn thẳng đó
- Lấy kết quả đó Edit vào text đã có.
Mong các bạn giúp mình. Thank alll.

Của bạn đây :)
;; free lisp from cadviet.com @Bommak 
(defun add_mline ()
(foreach e_record_sub e_record
(cond ((= 10 (car e_record_sub))
(setq pt1 (cdr e_record_sub)
mline_len 0.0
)
)
((= 11 (car e_record_sub))
(setq pt2 (cdr e_record_sub)
mline_len (+ mline_len (distance pt2 pt1))
pt1 pt2
)
)
)
)
(setq tot_len (+ tot_len mline_len))
(ssdel e_name ss)
)
;;;;;;@ssg
(defun CheckObj(e MyType) (equal (cdr (assoc 0 (entget e))) MyType))
(defun WriteRes(kq / OK e data)
(setq OK nil)
(while (not OK)
(setq e (car (entsel "\tChon text ghi ket qua:")))
(if (CheckObj e "TEXT") (setq OK T) (princ "\nDoi tuong chon khong phai text"))
)
(entmod (subst (cons 1 (rtos kq 2 2)) (assoc 1 (setq data (entget e))) data))
(princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun C:tg (/ tot_len ss e_name e_record e_type)
(setq tot_len 0.0)
(setq ss (ssget))
(if (null ss)
(exit)
)
(while (> (sslength ss) 0)
(setq e_name (ssname ss 0))
(setq e_record (entget e_name))
(setq e_type (cdr (assoc '0 e_record)))
(cond ((wcmatch e_type "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")
(command "lengthen" e_name "")
(setq tot_len (+ tot_len (getvar "PERIMETER")))
(ssdel e_name ss)
)
((wcmatch e_type "MLINE") (add_mline))
(e_type (ssdel e_name ss))
)
)
(setq tot_len (+ tot_len (getreal "\nGia tri cong them : ")))
(writeres tot_len)
)

  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3011 tiendaica

tiendaica

    biết zoom

  • Members
  • Pip
  • 18 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 12 January 2011 - 09:31 PM

cám ơn bạn đã giúp đỡ mình nhưng lisp bạn bị lỗi hay sao đó ! mình đánh lệnh td nó thông báo ty le mình nhập 1000 nó báo lỗi! bạn xem lai giùm minh nhé

mình gửi hình lên bạn xem sao nhé!
http://www.cadviet.c.../3/untitled.gif
  • 0

#3012 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 12 January 2011 - 09:51 PM

mình gửi hình lên bạn xem sao nhé!
http://www.cadviet.c.../3/untitled.gif

"Bạn" ở đây là ai vậy bạn tiendaica ơi :)
Góp ý bạn 1 chút : mục này có rất nhiều người đọc, post bài luân phiên, bạn chỉ ngưng 1 ngày là bị trôi đi ngay.
Bài của bạn cách đây cả tuần rồi, tự nhiên bạn lên nói 1 câu thế thì những người khác không thể theo dõi được.Vậy hãy quote gốc gác hoặc chỉ rõ đích danh người bạn muốn nói đến hoặc dùng từ "Các bạn", bạn nhé :)
Theo hình bạn post thì code bị lỗi đoạn này :
(if (= (tblsearch "style" "textdh") nil)
(command "style" "textdh" "vntime,vns" "0" "0.8" "10" "n" "n" "n" "")
)
(if (= (tblsearch "style" "text") nil)
(command "style" "text" "vntime,vns" "0" "1" "0" "n" "n" "n" "")
Do trong máy bạn hok có font vntime,vns ^^.Bạn xóa chữ đó đi và thay bằng loại font TCVN3 bạn vẫn dùng, có lẽ sẽ giải quyết đc vấn đề .Ví dụ
(if (= (tblsearch "style" "textdh") nil)
(command "style" "textdh" ".vntime" "0" "0.8" "10" "n" "n" "n" "")
)
(if (= (tblsearch "style" "text") nil)
(command "style" "text" ".vntimeH" "0" "1" "0" "n" "n" "n" "")

  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3013 shitty

shitty

    biết zoom

  • Members
  • Pip
  • 19 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 13 January 2011 - 04:03 PM

Ý bạn là hatch bằng layer 00-09hatch, hatch xong trả về layer cũ hay hatch bằng layer hiện tại, hatch xong trả về layer 00-09hatch ??


ý của em là khi mình đang vẽ bằng layer khác (vi' dụ là layer 00-01wall) ,,bình thường hatch xong thi sẽ phải chuyển từ layer 00-01wall về layer "00-09hatch"...nhưng h muốn hatch xong thi cái layer nó sẽ là layer 00-09hatch luôn...nếu được thì anh ketxu giup em thêm cái lisp là khi mình dùng lệnh dim (Như dimliagn hay dim ban kinh'..)thi đường dim cũng sẽ tự động nhảy về layer "08-dim(ví dụ thế). ..thanks u so much .!!!
  • 0

#3014 truongthanh

truongthanh

    biết lệnh text

  • Members
  • PipPipPipPip
  • 275 Bài viết
Điểm đánh giá: 7 (bình thường)

Đã gửi 13 January 2011 - 04:26 PM

Nhờ anh em sửa dùm em lisp này với, em download trên diễn đàn mình, hiện nay khi select two entities thì nếu trong vùng chọn có pline hay gì đó ngoài text thì báo lỗi << Error: bad DXF group: (1) >> giờ nhờ anh em sửa giúp sao cho vùng chọn có các đối tượng khác lisp cũng thực hiện được!Thank mọi người nhiều!

;SWAPTXT - Quickly swaps two text entities.
;
;Jeffery P Sanders
;
(defun C:SWT(/ ht eset enlist len)
(princ "\n ")(princ "\n ")
(princ "\nSelect Both Text Entities: ")
(setq eset(ssget))
(if (and (/= eset nil)(> (sslength eset) 1))
(progn
(setq en1(ssname eset 0))
(setq enlist1(entget en1))
(setq en2(ssname eset 1))
(setq enlist2(entget en2))
(princ "\n ") (princ "\n ")
(princ "\n...Please Wait....Exchanging Text...")
(setq txt1(cdr (assoc 1 enlist1)))
(setq txt2(cdr (assoc 1 enlist2)))
(setq enlist1 (subst
(cons 1 txt2)
(assoc 1 enlist1)
enlist1
)
)
(entmod enlist1)
(setq enlist2 (subst
(cons 1 txt1)
(assoc 1 enlist2)
enlist2
)
)
(entmod enlist2)
)
(princ "\nNothing Selected")
)
(princ "\n ....SWapTxt Complete.")(princ "\n ")
(princ)
)
  • 0

#3015 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 13 January 2011 - 07:26 PM

Nhờ anh em sửa dùm em lisp này với, em download trên diễn đàn mình, hiện nay khi select two entities thì nếu trong vùng chọn có pline hay gì đó ngoài text thì báo lỗi << Error: bad DXF group: (1) >> giờ nhờ anh em sửa giúp sao cho vùng chọn có các đối tượng khác lisp cũng thực hiện được!Thank mọi người nhiều!

;SWAPTXT - Quickly swaps two text entities.
;
;Jeffery P Sanders
;
(defun C:SWT(/ ht eset enlist len)
(princ "\n ")(princ "\n ")
(princ "\nSelect Both Text Entities: ")
(setq eset(ssget))
(if (and (/= eset nil)(> (sslength eset) 1))
(progn
(setq en1(ssname eset 0))
(setq enlist1(entget en1))
(setq en2(ssname eset 1))
(setq enlist2(entget en2))
(princ "\n ") (princ "\n ")
(princ "\n...Please Wait....Exchanging Text...")
(setq txt1(cdr (assoc 1 enlist1)))
(setq txt2(cdr (assoc 1 enlist2)))
(setq enlist1 (subst
(cons 1 txt2)
(assoc 1 enlist1)
enlist1
)
)
(entmod enlist1)
(setq enlist2 (subst
(cons 1 txt1)
(assoc 1 enlist2)
enlist2
)
)
(entmod enlist2)
)
(princ "\nNothing Selected")
)
(princ "\n ....SWapTxt Complete.")(princ "\n ")
(princ)
)

bạn thay dòng này là oke

(setq eset(ssget)) -> (setq eset (ssget '((0 . "TEXT"))))
  • 1
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#3016 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 13 January 2011 - 10:11 PM

ý của em là khi mình đang vẽ bằng layer khác (vi' dụ là layer 00-01wall) ,,bình thường hatch xong thi sẽ phải chuyển từ layer 00-01wall về layer "00-09hatch"...nhưng h muốn hatch xong thi cái layer nó sẽ là layer 00-09hatch luôn...nếu được thì anh ketxu giup em thêm cái lisp là khi mình dùng lệnh dim (Như dimliagn hay dim ban kinh'..)thi đường dim cũng sẽ tự động nhảy về layer "08-dim(ví dụ thế). ..thanks u so much .!!!

Bình thường trước khi thao tác đã chuyển rồi bạn ạ.Cái này đã có trên 4room,chắc bạn chưa tìm hoặc tìm không thấy, mình post lại giúp bạn đây
Dim : mình đang đặt lệnh tắt là

d:dimliner
dc:dimcontinue
da:dimalign
qd:quick dim
dg :dimanguala

Layer : 08-dim

;frê líp from cadviet.com @ gia_bach
(defun c:d() (VeDim "d"))
(defun c:dc() (VeDim "dc"))
(defun c:da() (VeDim "da"))
(defun c:qd() (VeDim "qd"))
(defun c:dg() (Vedim "dg"))
(defun VeDim(input / ov vl)
(defun *error* (msg)
(if ov (mapcar 'setvar vl ov)); reset Sys Vars
(if (not(wcmatch (strcase msg) "*BREAK,*EXIT*,*CANCEL*"))
(princ (strcat "\n** Error: " msg " **")))
(princ))

(setq vl '("clayer" "cmdecho") ; Sys Var list
ov (mapcar 'getvar vl)) ; Get Old values
(setvar "cmdecho" 0)
(if (tblsearch "layer" "08-dim")
(setvar "clayer" "08-dim")
(command "-layer" "M" "08-dim" "" ) )
(setvar "cmdecho" 1)
(cond
((= input "d")(command "_dimlinear"))
((= input "da")(command "_dimaligned"))
((= input "dc")(command "_dimcontinue"))
((= input "dg")(command "_dimangular"))
((= input "qd")(command "qdim"))
)
(while (= (getvar "CMDACTIVE") 1) (command pause))
(mapcar 'setvar vl ov) ; reset Sys Vars
(princ)
)
;;;;;;;
;;;;;;;

Hatch thì mình để là 00-09hatch, bạn cứ tự sửa theo ý bạn nhé
;;;;;;;Hatch lay gia tri mac dinh
;;;;;;;;;;;;;;;;sau do tra ve layer hien hanh
;free lisp from cadviet.com @ Tue_NV
(defun c:h(/ ov vl)
(setvar "hpname" "ansi31")
  (setq vl '("clayer" "cmdecho"); Sys Var list
    ov (mapcar 'getvar vl)); Get Old values
  (setvar "cmdecho" 1)
  (if (tblsearch "layer" "00-09hatch")
    (setvar "CLAYER" "00-09hatch")
    (command "-layer" "M" "00-09hatch" "" ) )
  (initdia)
  (command "hatch")
  (while (< 0 (getvar "CMDACTIVE"))
    (command pause)
  )
  (vl-cmdf "change" "L" "" "P" "LA" "00-09hatch" "")
  (mapcar 'setvar vl ov); reset Sys Vars
  (princ)
  )

  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3017 lehuwng

lehuwng

    Chưa sử dụng CAD

  • Members
  • Pip
  • 1 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 13 January 2011 - 10:47 PM

Thưa các bro là em đang làm 1 file quy hoạch quy mô 300ha, làm chi tiết 1/500 trong đó có 1 công việc khá là thủ công. Thứ 2 này em phải giao rồi mà giờ vẫn chưa có biện pháp nào giải quyết vấn đề này: Vát góc (chamfer) đường thẳng- đường cong, đường cong - đường cong (Có thể là line hay pline).
Nhờ các bro viết giùm cái lisp thực hiện được như lệnh chamfer nhưng có thể áp dụng cho đường cong đc ko ạ.
chân thành cảm ơn các bro đã đọc và quan tâm giúp đỡ.
  • 0

#3018 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 13 January 2011 - 11:39 PM

Bạn hãy post file dwg có diễn tả trước và sau khi dùng lisp xem sao?? Vì mình chưa hiểu chamfer cho đường cong là nó chamfer thế nào, với lại cũng chưa thấy đường cong nào là Line cả ^^
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3019 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 14 January 2011 - 08:44 AM

Mình nhờ mọi người viết giúp đoạn lisp sau:
-Hỏi chọn tập hợp text.
-Hỏi chọn các text đánh dấu. (các text này nằm trong tập hợp trên).
-Chuyễn toàn bộ tập hợp trên sang layer2, các text đánh dấu sang layer3.
  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#3020 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 14 January 2011 - 09:01 AM

Mình nhờ mọi người viết giúp đoạn lisp sau:
-Hỏi chọn tập hợp text.
-Hỏi chọn các text đánh dấu. (các text này nằm trong tập hợp trên).
-Chuyễn toàn bộ tập hợp trên sang layer2, các text đánh dấu sang layer3.

Tue_NV nghĩ rằng anh Duy có thể tự xây dựng code này được
1. Chọn tập hợp text -> Dùng hàm ssget (Gọi là tập ss1) -> Chuyển tập ss1 sang layer2
2. Chọn các text đánh dấu -> Dùng hàm ssget để chọn (Gọi là tập ss2)
3. Convert ss2 thành List ename (Gọi là List L)
4. Sử dụng hàm ssmemb kiểm tra từng phần tử trong list L có thuộc ss1 hay không?
+ Nếu phần tử trong list L thuộc ss1 thì chuyển nó sang layer3.
  • 1