Đế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

#3381 traitimsat034

traitimsat034

    biết vẽ pline

  • Members
  • PipPip
  • 61 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 24 April 2011 - 11:12 PM

(defun c:cht1(/ hText chLay Lay chFont)
(vl-load-com)
(command "undo" "be")
(princ "Ch\U+1ECDn Dim, *Text, ATT* c\U+1EA7n thay \U+0111\U+1ED5i :")
(setq ss (ssget '((0 . "DIMENSION,LEADER,*TEXT,ATT*"))))
(setq hText (getreal "\Chi\U+1EC1u cao ch\U+1EEF :") chLay "k" chFont "k")
(initget 1 "c k")
(setq chLay (getkword "B\U+1EA1n c\U+00F3 mu\U+1ED1n thay \U+0111\U+1ED5i layer Text ? <K>[C/K] :"))
(if (or (null chLay) (= (strcase chLay) "K"))
(setq Lay nil)
(setq Lay (getstring "T\U+00EAn layer :"))
)
(initget 1 "c k")
(setq chFont (getkword "B\U+1EA1n c\U+00F3 mu\U+1ED1n thay \U+0111\U+1ED5i Font ? <K> [C/K] :"))
(if (not(or (null chLay) (= (strcase chLay) "K")))
(progn
(vlax-for x (vla-get-textstyles
(vla-get-activedocument (vlax-get-acad-object))
)
(vla-put-fontfile x "VNswitzerlandcondlight.TTF")
)
)
)
(foreach ent
(mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
(if (vlax-property-available-p ent 'TextHeight) (vlax-put-property ent 'TextHeight (rtos hText 2 0) ))
(if (vlax-property-available-p ent 'Height) (vlax-put-property ent 'Height (rtos hText 2 0)) )
(if (and lay (vlax-property-available-p ent 'Layer)) (vlax-put-property ent 'Layer Lay))
)
(command "undo" "en")
)
Bạn dùng tạm :(


Chào bạn ketxu! mình có chút góp ý thế này.
về text và mtext thì không vấn đề gì, còn dim mình nghĩ nên thay đổi chiều cao text trong dim bằng cách thay đổi dimfit thì sẽ hay hơn, vì nếu chỉ thay đổi chiều cao text bình thường thì sẽ làm mất tỉ lệ tương đối giữa textdim và các thành phần khác của dim. khi đó hình như giá trị của dimfit cần thay đổi sẽ bằng chiều cao của text nhập vào/ chiều cao text trong dimstyle. còn một vấn đề là phải trả (reset) chiều cao của textdim về giá trị trong dimstyle trước khi thực hiện thay đổi dimfit, với lại lisp của bạn không dùng được với số thập phân à? . mình có chút ý kiến như vậy cám ơn bạn!
  • 1

#3382 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 24 April 2011 - 11:51 PM

Mình chưa rành cái dimfit lắm. Không biết có hiểu đúng ý bạn không.Liệu có phải là overall ?? Bạn gửi cho mình ví dụ 1 file được không ? Hơn nữa, việc xử lý dim rất dễ dính mấy anh override, mà mình thì chưa thao tác được với các đại ca này :)
Còn phần thập phân, srr vì mình để rtos 2 0, đoạn này hơi ngớ ngẩ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


#3383 traitimsat034

traitimsat034

    biết vẽ pline

  • Members
  • PipPip
  • 61 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 25 April 2011 - 01:34 AM

Mình chưa rành cái dimfit lắm. Không biết có hiểu đúng ý bạn không.Liệu có phải là overall ?? Bạn gửi cho mình ví dụ 1 file được không ? Hơn nữa, việc xử lý dim rất dễ dính mấy anh override, mà mình thì chưa thao tác được với các đại ca này :)
Còn phần thập phân, srr vì mình để rtos 2 0, đoạn này hơi ngớ ngẩn ^^


đúng là cái dim scane overall đấy, tại mình thấy nó ở tab fit nên hay gọi là dimfit, tiếng tây có hạn mà :lol:
Hình đã gửi
  • 1

#3384 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 25 April 2011 - 08:04 AM

Bạn có để ý thấy cái gạch chéo 2 bên sẽ to lên k :) Vẫn khoảng cách đó mà 2 cái này nó gạch 1 phát hết cả chiều dài dim luôn thì ^^.. Nói chung, đã thay đổi dim thì k nên vượt 1 con số quá lớn, lần trước trong lisp Scale Dim các bác CV đã tranh luận khá lâu n chưa đưa ra đc phương án tối ưu ^^
  • 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


#3385 traitimsat034

traitimsat034

    biết vẽ pline

  • Members
  • PipPip
  • 61 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 25 April 2011 - 12:32 PM

Bạn có để ý thấy cái gạch chéo 2 bên sẽ to lên k :) Vẫn khoảng cách đó mà 2 cái này nó gạch 1 phát hết cả chiều dài dim luôn thì ^^.. Nói chung, đã thay đổi dim thì k nên vượt 1 con số quá lớn, lần trước trong lisp Scale Dim các bác CV đã tranh luận khá lâu n chưa đưa ra đc phương án tối ưu ^^


hì, mình thì lại nghĩ khác. trong một bản vẽ khi in ra thì text hight nhỏ nhất sẽ bằng khoảng 2~2.5mm. như vậy text hight của dim cũng sẽ bằng khoảng 2~2.5. nếu như cái gạch chéo đó với mũi tên mà rất nhỏ so với text thì sẽ chẳng nhìn thấy gì cả, khi đó nó sẽ không giống dim lắm. chắc chẳng ai để bản vẽ tỉ lệ như vậy đâu. Hiện tại chỉnh thủ công thì mình vẫn chỉnh dim scane overall :)
  • 0

#3386 tranhoangxd

tranhoangxd

    biết vẽ circle

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

Đã gửi 25 April 2011 - 01:29 PM

nhờ các bác xem hộ hình rồi viết hộ hoặc là tìm hộ em cái lisp này cái
http://www.upanh.com.../4vwa8b8xeg.htm
em muốn vẽ cái đuờng PL màu xanh lá cây như trong hình vẽ
trước chỉ cần vẽ từ 2 điểm A , B là nó ra được cái polyline như hình vẽ
trước em có cái lisp này rồi mà giờ chẳng tìm thấy đâu nữa
mong các bác tìm giùm em tí
thanks
  • 0

#3387 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 25 April 2011 - 03:33 PM

nhờ các bác xem hộ hình rồi viết hộ hoặc là tìm hộ em cái lisp này cái
http://www.upanh.com.../4vwa8b8xeg.htm
em muốn vẽ cái đuờng PL màu xanh lá cây như trong hình vẽ
trước chỉ cần vẽ từ 2 điểm A , B là nó ra được cái polyline như hình vẽ
trước em có cái lisp này rồi mà giờ chẳng tìm thấy đâu nữa
mong các bác tìm giùm em tí
thanks

 (Defun c:nc(/ p1 p2 p3 p4 p5 p6 p11 p12 l ang)
(setq x (getvar "osmode"))
(setq p1 (getpoint "Diem dau: ")
p2 (getpoint p1 "Diem cuoi : "))
(setq l (distance p1 p2))
(setq p11 (polar p1 (angle p2 p1) (/ l 5))
p12 (polar p2 (angle p1 p2) (/ l 5)))
(setq ang (angle p1 p2))
(setq p3 (polar p1 ang (/ l 2.5))
p4 (polar p3 (+ (/ pi 2) ang) (/ l 5))
p5 (polar p3 ang (/ l 5))
p6 (polar p5 (- ang (/ pi 2)) (/ l 5)))
(setvar "osmode" 0)
;(setvar "clayer" "KCVN-MANH")
(command "pline" p11 p3 p4 p6 p5 p12 "")
(setvar "osmode" x)
)
Bạn thử xem sao
  • 1

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


#3388 tranhoangxd

tranhoangxd

    biết vẽ circle

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

Đã gửi 25 April 2011 - 03:58 PM

 (Defun c:nc(/ p1 p2 p3 p4 p5 p6 p11 p12 l ang)
(setq x (getvar "osmode"))
(setq p1 (getpoint "Diem dau: ")
p2 (getpoint p1 "Diem cuoi : "))
(setq l (distance p1 p2))
(setq p11 (polar p1 (angle p2 p1) (/ l 5))
p12 (polar p2 (angle p1 p2) (/ l 5)))
(setq ang (angle p1 p2))
(setq p3 (polar p1 ang (/ l 2.5))
p4 (polar p3 (+ (/ pi 2) ang) (/ l 5))
p5 (polar p3 ang (/ l 5))
p6 (polar p5 (- ang (/ pi 2)) (/ l 5)))
(setvar "osmode" 0)
;(setvar "clayer" "KCVN-MANH")
(command "pline" p11 p3 p4 p6 p5 p12 "")
(setvar "osmode" x)
)
Bạn thử xem sao

Cảm ơn bạn
đúng thứ mình cần tìm rồi
  • 0

#3389 ngocnam.cad

ngocnam.cad

    biết vẽ ellipse

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

Đã gửi 26 April 2011 - 11:00 AM

nhờ mọi nguời viết hộ em lisp join pline trong cad 2005 với ạ. vì bắt buộc nên em phải dùng trên cad 2005. mà cad 2005 ko join được như cad 08 , rất bất tiện. em nghe nói có lisp join ở cad 2005 nhưng tìm mãi không đuợc. mong mọi nguời giúp em viết lisp này, cám ơn mọi người nhiều nhiều.
  • 0

#3390 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5451 Bài viết
Điểm đánh giá: 2625 (tuyệt vời)

Đã gửi 26 April 2011 - 01:30 PM

nhờ mọi nguời viết hộ em lisp join pline trong cad 2005 với ạ. vì bắt buộc nên em phải dùng trên cad 2005. mà cad 2005 ko join được như cad 08 , rất bất tiện. em nghe nói có lisp join ở cad 2005 nhưng tìm mãi không đuợc. mong mọi nguời giúp em viết lisp này, cám ơn mọi người nhiều nhiều.

Bạn dùng cái này xem:
http://www.cadviet.c...ong_pline_1.lsp
  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#3391 m4u_and1

m4u_and1

    biết zoom

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

Đã gửi 26 April 2011 - 03:21 PM

Xin chào các bác. Các bác giúp em giải quyết vấn đề này nhé.
em rất cần cái Lisp để matchprop nội dung của text nên nếu bác nào giúp được em thì quý hóa quá :D
  • 0

#3392 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 26 April 2011 - 03:27 PM

Xin chào các bác. Các bác giúp em giải quyết vấn đề này nhé.
em rất cần cái Lisp để matchprop nội dung của text nên nếu bác nào giúp được em thì quý hóa quá :D

Bạn dùng cái này thử xem.
(defun c:tt (/ A B)
(if (setq A (nentsel "\nCh\U+1ECDn text ngu\U+1ED3n :"))
(progn
(setq A (cdr (assoc 1 (entget (car A)))))
(while (setq B (car (nentsel "\nCh\U+1ECDn text b\U+1ECB thay th\U+1EBF :")))
(entmod
(subst
(cons 1 A)
(assoc 1 (entget B))
(entget B)
) ;_ end of subst
) ;_ end of entmod
) ;_ end of while
) ;_ end of progn
) ;_ end of if
(princ)
) ;_ end of defun
P/S : match được cả các text trong block :)
  • 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


#3393 ngocnam.cad

ngocnam.cad

    biết vẽ ellipse

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

Đã gửi 26 April 2011 - 03:59 PM

Bạn dùng cái này xem:
http://www.cadviet.c...ong_pline_1.lsp

thanks bác nhiều nhiều.. bác có thể giúp em tối ưu lisp đó hơn nữa được không ạ??? nghĩa là dùng nó ngắn gọn gần như join trong acad7 >> vậy.. nếu được vậy thì tốt quá.. còn không thì... hihi.ko sao.thaks bác!
  • 0

#3394 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5451 Bài viết
Điểm đánh giá: 2625 (tuyệt vời)

Đã gửi 26 April 2011 - 04:29 PM

thanks bác nhiều nhiều.. bác có thể giúp em tối ưu lisp đó hơn nữa được không ạ??? nghĩa là dùng nó ngắn gọn gần như join trong acad7 >> vậy.. nếu được vậy thì tốt quá.. còn không thì... hihi.ko sao.thaks bác!

Ngắn cỡ này chắc hết cỡ ngắn:
http://www.cadviet.c...ang_pline_1.lsp
  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#3395 lisp_newbie

lisp_newbie

    Chưa sử dụng CAD

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

Đã gửi 27 April 2011 - 12:35 AM

Chào các bác! Về autolisp em chỉ newbie nên mạo muội đề nghị các bác viết giùm em một file.lsp chạy được yêu cầu sau:

Ta có hai đường spline như hình vẽ cắt nhau tại một điểm P1.
http://www.mediafire...?zrd5dif2p991b8

Yêu cầu:

1. Vẽ đoạn thẳng tiếp tuyến với hai đường spline trên (trong autocad dùng lệnh "line" sau đó dùng "Ctrl+chuột phải" để chọn hai điểm tiếp tuyến;

http://www.mediafire...5m6s2dx9be4a388

2. Vẽ nốt hai đoạn thẳng còn lại;

http://www.mediafire...7baesbt0xdr0tkv

3. Dùng hatch để đánh dấu tam giác (bởi ba đoạn thẳng trên.

http://www.mediafire...5lqta4rn4jq1taw

Mục đích cuối cùng là có được tam giác (đánh dấu bằng "hatch" ở trên)

Cảm ơn các bác rất nhiều!

Bài viết đã được chỉnh sửa nội dung bởi lisp_newbie: 27 April 2011 - 12:36 AM

  • 0

#3396 latoidayvn

latoidayvn

    biết zoom

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

Đã gửi 27 April 2011 - 08:01 AM

mình đã tìm trên diễn dàn vai lisp về chuyển toạ độ từ pline sang exel. Nhưng chưa tìm thấy cái nào xuất cả độ cao
Vd: mình có 1 đường pline, dùng topo để chuyển thành độ cao 50, nhưng mà khi xuất điểm trên đường đó với lệnh coorn thì ko ra được độ cao là 50
Vậy mong các bạn giúp mình cái lisp khi xuất toạ dộ các điểm trên đường pline đó no sẽ hỏi mình là xuất các điểm đó với độ cao nào ?( các điểm cùng độ cao)
  • 0

#3397 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 27 April 2011 - 08:27 AM

mình đã tìm trên diễn dàn vai lisp về chuyển toạ độ từ pline sang exel. Nhưng chưa tìm thấy cái nào xuất cả độ cao
Vd: mình có 1 đường pline, dùng topo để chuyển thành độ cao 50, nhưng mà khi xuất điểm trên đường đó với lệnh coorn thì ko ra được độ cao là 50
Vậy mong các bạn giúp mình cái lisp khi xuất toạ dộ các điểm trên đường pline đó no sẽ hỏi mình là xuất các điểm đó với độ cao nào ?( các điểm cùng độ cao)

Nếu cùng độ cao thì bạn vào Excel mà thêm cũng được chứ sao hè ^^
  • 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


#3398 ngocnam.cad

ngocnam.cad

    biết vẽ ellipse

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

Đã gửi 27 April 2011 - 08:47 AM

Ngắn cỡ này chắc hết cỡ ngắn:
http://www.cadviet.c...ang_pline_1.lsp

tuyệt vời.. em yêu bác nhiều lắm lắm...hehe... thanks bác phát nào..
  • 0

#3399 latoidayvn

latoidayvn

    biết zoom

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

Đã gửi 27 April 2011 - 09:25 AM

Nếu cùng độ cao thì bạn vào Excel mà thêm cũng được chứ sao hè ^^

nếu chỉ là 1 hoặc 2 đường thì mình cũng đã làm thế rồi ^^
Nhưng ở đây mình có nhiều đường lắm, nếu làm như thế thì rất lâu vì fải thêm công đoạn sửa trong exel, nếu mà sửa được luôn trên cad sau đó xuất ra thì tốt quá
  • 0

#3400 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 27 April 2011 - 09:28 AM

nếu chỉ là 1 hoặc 2 đường thì mình cũng đã làm thế rồi ^^
Nhưng ở đây mình có nhiều đường lắm, nếu làm như thế thì rất lâu vì fải thêm công đoạn sửa trong exel, nếu mà sửa được luôn trên cad sau đó xuất ra thì tốt quá

Vì bạn nói tất cả cùng cao độ, tức là cột z chỉ có 1 giá trị, thì cũng đâu có lâu ^^
CÒn nếu không, bạn hãy post công cụ bạn đang sử dụng (lisp), file CAD mẫu, file số liệu đầu ra mẫu thì mọi người mới giúp bạn được. Kiểu như nhờ bạn gái nấu ăn thì cũng nên ga lăng đi chợ ý mà ^^
  • 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