Đến nội dung


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

Viết Lisp theo yêu cầu


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

#2721 TRUNGNGAMY

TRUNGNGAMY

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 401 Bài viết
Điểm đánh giá: 91 (tàm tạm)

Đã gửi 31 August 2009 - 01:14 AM

có bạn nào biết tại sao lisp trên ko load được vào cad ko? giúp mình với....mình rất cần lisp này.....anh Hoành,anh Tue_NV,ssq...coi dùm em....

Lisp này làm gì vậy bạn. Mình down về load trên cad2002 nó vẫn bình thường. Gõ lệnh jd kg thấy xảy ra hiện tượng báo lỗi
  • 1

#2722 kamezoko

kamezoko

    biết vẽ line

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

Đã gửi 31 August 2009 - 10:26 AM

Lisp này làm gì vậy bạn. Mình down về load trên cad2002 nó vẫn bình thường. Gõ lệnh jd kg thấy xảy ra hiện tượng báo lỗi

load thì đươc nhưng nó ko chạy gi hết...mình ko biết tại sao lại như vậy...bạn nào biết chỉ dùm..cám ơn :s_big:
  • 0

#2723 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 31 August 2009 - 10:39 AM

Ừ, như Anh Duy nói đúng đó, nó mất nhiều thời gian, mình đã từng viết mã chuyển từ TCVN3 sang VNI rồi, nay để đáp ứng yêu cầu của bạn xin bạn hãy chờ thêm 1 vài ngày nữa nhé, chương trình này đang trong giai đoạn xào nấu bao giờ xong mình sẽ post lên ngay.

Vô cùng cảm ơn bạn!đợi tin của bạn!tick thanks cho bạn 1 cái đã!
  • 0

#2724 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 31 August 2009 - 10:44 AM

Chào Thaistreetz'
Điều bạn nói chỉ là phỏng đoán, chưa hề có cơ sở chắc chắn. Vì bản thân Tue_NV cũng đang xây dựng Code này và thấy rằng các kí tự mình làm chạy rất tốt. Code này hoàn thành rất lâu vì phải xây dựng danh sách nguồn và danh sách đích

Dạo này công việc của Tue_NV rất bận nên có hoàn thành code này trễ thì cũng mong các bạn thông cảm
Không biết các kí tự sau thế nào nhưng các kí tự đầu chạy rất tốt. Hy vọng là mình xây dựng Code thành công để giúp cho mọi người. Mong các bạn ủng hộ. Thanks

cảm ơn TUE_NV rất nhiều!hy vọng sẽ sớm được sữ dụng LISP này của TUE!chúc bạn công tác tốt!
  • 1

#2725 phambr45

phambr45

    Chưa sử dụng CAD

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

Đã gửi 31 August 2009 - 02:59 PM

Mình thấy ở đây có khá nhiều bạn quan tâm đến lisp.
Mời các bạn tích cực tham gia đóng góp xây dựng bảng "Nội dung và cấu trúc chương trình" của CadViet Utility.

Xin lisp sắp xếp text theo chiều ngang:
Trước khi thực hiện lệnh
http://www.cadviet.c...s/2/truoc_1.jpg
Sau khi thực hiện lệnh
http://www.cadviet.c...les/2/sau_2.jpg
Xin cảm ơn mọi người rât nhiều.
  • 0

#2726 tomboy

tomboy

    biết vẽ polygon

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

Đã gửi 31 August 2009 - 03:32 PM

Hôm nay em có viết hộ 1 lisp cho một người bạn, cậu ta yêu cầu sử dụng Unicode đối với các text mà lisp vẽ ra màn hình. Và em phát hiện ra là lisp hình như không hỗ trợ nhận dạng bảng mã Unicode. Em viết bằng notepad và đã save as với Encoding là UTF-8. Lisp chạy được nhưng hoàn toàn không nhận diện đc các ký tự tiếng việt của bảng mã Unicode.

Như vậy nếu ta có xây dựng được danh sách mã nguồn (Bảng mã Unicode) và mã đích (bảng mã VNI) thì lisp cũng chỉ nhận diện được mã đích nên có lẽ sẽ không thể dùng được cách mà lisp chuyển từ TCVN3 sang VNI đã làm.

taị vì khi bạn thay đổi mã nguồn thì bạn phải thay đổi cả font của nó thì nó với hiểu được chứ...
Tái bút: bạn có thể tham khảo chương trình này của Tomboy viết nhằm chuyển mã TCVN3 sang VNI nhé, còn chuyển từ mã này qua mã kia và ngược lại thì cũng trên nguyên tắc này thôi, nhưng tại vì mình bận quá nên chưa viết được, rất mong sự cộng tác của bạn hoàn thành nốt đoạn chương trình này để anh em diễn đàn được nhờ. Thanks
linh nè: http://www.cadviet.c...files/2/chm.rar
note: mình mới chỉ viết chuyển mã cho TEXT chứ MTEXT thì chưa làm vì vậy nhờ Thaistreetz hoàn thành nốt nhé
  • 1

#2727 tomboy

tomboy

    biết vẽ polygon

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

Đã gửi 31 August 2009 - 03:53 PM

tôi chạy thử lisp của bạn thì nó hiện như sau:
Command: _appload jd.lsp successfully loaded.
Command:
Command:
Command: jd
Undo Enter the number of operations to undo or
[Auto/Control/BEgin/End/Mark/Back] <1>: group
Command:
Select objects: Specify opposite corner: 104 found
Select objects:
Undo Enter the number of operations to undo or
[Auto/Control/BEgin/End/Mark/Back] <1>: end
Command: nil
Command:
chọn đối tượng xong là nó ko thực hiện gì hết...
đây la file mẩu của mình :
http://www.cadviet.com/upfiles/2/3.dwg
xin giúp đở.....thank

do số liệu của bạn không đúng, bạn xem lại bản vẽ này nhé: http://www.cadviet.c...an_kamezoko.dwg
  • 1

#2728 tomboy

tomboy

    biết vẽ polygon

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

Đã gửi 31 August 2009 - 04:59 PM

Xin lisp sắp xếp text theo chiều ngang:
Trước khi thực hiện lệnh
http://www.cadviet.c...s/2/truoc_1.jpg
Sau khi thực hiện lệnh
http://www.cadviet.c...les/2/sau_2.jpg
Xin cảm ơn mọi người rât nhiều.

mình thấy 2 file của bạn giống hệt nhau, nên mình chẳng hiểu gì hết. bạn có thể post lại và giải thích rõ hơn nhé (nhớ gửi bản vẽ chứ đừng gửi ảnh)
  • 1

#2729 thiep

thiep

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 369 Bài viết
Điểm đánh giá: 260 (khá)

Đã gửi 31 August 2009 - 05:20 PM

do số liệu của bạn không đúng, bạn xem lại bản vẽ này nhé: http://www.cadviet.c...an_kamezoko.dwg

@tomboy, @kamezoko
Tomboy đưa ra lisp JD tuy thiep chưa chạy thử, nhưng Thiep hiểu là Tomboy muốn joint các ký tự trong text sao cho dấu chấm thập phân trùng với điểm đo chi tiết trong trắc địa.
Còn lisp JD của bác Hoanh là để tạo line nối các điểm đo chi tiết sao cho nó có cùng kiểu seri Code.
Làm sao mà giống nhau được?!! Tomboy nói ai đó đã táy máy sửa lại lisp JD của bác Hoanh có nghĩa ai đó đã biết được pass của bác Hoành (ngoại trừ bác Hoành đã táy máy làm điều này)!!! Lần sau nhớ nói cho đúng bạn ạ.
Kamezoko chỉ cần sửa lại đoạn này không có các khoảng trống giữa "< OR" hay "< AND"
Có lẻ bị lỗi khi đưa lisp vào CODEBOX, nó tự động tách ra thôi.
  • 1

#2730 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 31 August 2009 - 07:15 PM

taị vì khi bạn thay đổi mã nguồn thì bạn phải thay đổi cả font của nó thì nó với hiểu được chứ...
Tái bút: bạn có thể tham khảo chương trình này của Tomboy viết nhằm chuyển mã TCVN3 sang VNI nhé, còn chuyển từ mã này qua mã kia và ngược lại thì cũng trên nguyên tắc này thôi, nhưng tại vì mình bận quá nên chưa viết được, rất mong sự cộng tác của bạn hoàn thành nốt đoạn chương trình này để anh em diễn đàn được nhờ. Thanks
linh nè: http://www.cadviet.c...files/2/chm.rar
note: mình mới chỉ viết chuyển mã cho TEXT chứ MTEXT thì chưa làm vì vậy nhờ Thaistreetz hoàn thành nốt nhé


Tất nhiên là mình đã chạy lisp với các font unicode rồi. Mình ví dụ đơn giản với code này nhé

(defun c:TT ()
(setq PT (getpoint "\nChon diem chen text:"))
(command "TEXT" pt 2 0 "Chào mừng bạn đến với Cad việt")
)

Mình dùng cad 2008, chạy với textstyle dùng 1 trong 3 font: time new roman, aria và tahoma là 3 font thuộc bảng mã Unicode.
kết quả ghi ra màn hình của mình được thế này: Chào mừng bạn đến vá»›i Cad việt

Công việc của mình cũng hơi bận chút vì fải đá thêm ngoài nữa, cuối tuần rảnh hơn mình sẽ nghiên cứu code của bạn sau vậy.
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#2731 tomboy

tomboy

    biết vẽ polygon

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

Đã gửi 31 August 2009 - 07:29 PM

@tomboy, @kamezoko
Tomboy đưa ra lisp JD tuy thiep chưa chạy thử, nhưng Thiep hiểu là Tomboy muốn joint các ký tự trong text sao cho dấu chấm thập phân trùng với điểm đo chi tiết trong trắc địa.
Còn lisp JD của bác Hoanh là để tạo line nối các điểm đo chi tiết sao cho nó có cùng kiểu seri Code.
Làm sao mà giống nhau được?!! Tomboy nói ai đó đã táy máy sửa lại lisp JD của bác Hoanh có nghĩa ai đó đã biết được pass của bác Hoành (ngoại trừ bác Hoành đã táy máy làm điều này)!!! Lần sau nhớ nói cho đúng bạn ạ.
Kamezoko chỉ cần sửa lại đoạn này không có các khoảng trống giữa "< OR" hay "< AND"
Có lẻ bị lỗi khi đưa lisp vào CODEBOX, nó tự động tách ra thôi.

tại vì mình nghĩ trong chương trình của bác Hoành mục đích chính là nối text TEN DIEM với text CODE để tạo thành 1 text duy nhất, (và đoạn này mình nghĩ đã bị ai xoá đi mất tiêu, còn đoạn nối TEN DIEM với CODE có tên trùng với TEN DIEM chỉ là để thông báo cho người dùng biết. Chính vì thế mà mình với thay đổi Lisp của bác ấy. Vả lại mình cũng nói với bác ấy nếu mình có thay đổi công năng chương trình của bác thì bác cứ góp ý phê bình mà. Dẫu sao thì mình cũng cảm ơn sự góp ý của bạn, còn chuyện biết Pass với sửa được thì bạn hoàn toàn hiểu sai ý của mình, chẳng lẽ đoạn lisp nào post lên mạng đều phải biết pass mới sửa được hay sao?
  • 0

#2732 kamezoko

kamezoko

    biết vẽ line

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

Đã gửi 31 August 2009 - 11:44 PM

@tomboy, @kamezoko
Tomboy đưa ra lisp JD tuy thiep chưa chạy thử, nhưng Thiep hiểu là Tomboy muốn joint các ký tự trong text sao cho dấu chấm thập phân trùng với điểm đo chi tiết trong trắc địa.
Còn lisp JD của bác Hoanh là để tạo line nối các điểm đo chi tiết sao cho nó có cùng kiểu seri Code.
Làm sao mà giống nhau được?!! Tomboy nói ai đó đã táy máy sửa lại lisp JD của bác Hoanh có nghĩa ai đó đã biết được pass của bác Hoành (ngoại trừ bác Hoành đã táy máy làm điều này)!!! Lần sau nhớ nói cho đúng bạn ạ.
Kamezoko chỉ cần sửa lại đoạn này không có các khoảng trống giữa "< OR" hay "< AND"
Có lẻ bị lỗi khi đưa lisp vào CODEBOX, nó tự động tách ra thôi.

tôi đã sửa lại nhưng nó ko thực hiện nối line..??load thì thành công,chọn đối tượng xong thì nó ko làm việc tiếp...hic :s_big:
cám ơn tomboy nhiều ,lisp của bạn ko giống ý tôi nhưng cũng là lisp hay (^;^)
có ai giúp mình ko????huhu
  • 0

#2733 phambr45

phambr45

    Chưa sử dụng CAD

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

Đã gửi 01 September 2009 - 07:51 AM

Xin lisp sắp xếp text theo chiều ngang:
Mình xin trình bày rõ yêu cầu trong bản vẽ sau
Mong mọi người giúp đỡ.
http://www.cadviet.c.../2/xin_lisp.dwg
  • 0

#2734 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 01 September 2009 - 08:43 AM

Xin lisp sắp xếp text theo chiều ngang:
Mình xin trình bày rõ yêu cầu trong bản vẽ sau
Mong mọi người giúp đỡ.
http://www.cadviet.c.../2/xin_lisp.dwg

Bạn sử dụng Code này thử nhé :

(defun c:sxt()
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq ss (ssget '((0 . "TEXT,MTEXT"))))
(command "justifytext" ss "" "BC")

(setq lst (ss2ent ss)
lst (vl-sort lst
'(lambda (e1 e2)
(<
(cadr (assoc 10 (entget e1)))
(cadr (assoc 10 (entget e2)))
)
)
)
)

(setq ddau (cdr(assoc 10 (entget(car lst))))
i 0)

(foreach e lst
(setq ent (entget e))
(setq dcuoi (cdr(assoc 10 ent)))
(setq ddauu (list (car dcuoi) (cadr ddau) 0))
(command "move" e "" dcuoi ddauu)
(setq i (1+ i))
)
(setvar "osmode" oldos)
(Princ)
)
;
(defun ss2ent (ss / sodt index lstent)
(setq
sodt (if ss (sslength ss) 0)
index 0
)
(repeat sodt
(setq ent (ssname ss index)
index (1+ index)
lstent (cons ent lstent)
)
)
(reverse lstent)
)

  • 0

#2735 nvc

nvc

    biết pan

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

Đã gửi 01 September 2009 - 09:26 AM

Nhờ các bác cao thủ viết giúp em LISP có yêu cầu như thế này:
1.Khi thực hiện lệnh, ta có thể vẽ đồng thời 2 đường line hay 2 đường polyline, hoặc arc...với khoảng cách của 2 đường và màu sắc có thể thay đổi do người dùng.VD: khi vẽ, tạo ra đồng thời 2 đường line, line 1 màu số 4, line 2 màu số 8
2.Lisp thứ 2 là khi thực hiện ta có thể chon các đối tượng cùng màu để đưa vào 1 lớp.
Thank các bác cao thủ nhiều...
  • 0

#2736 bach1212

bach1212

    biết lệnh trim

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

Đã gửi 01 September 2009 - 10:21 AM

các bác viết giúp em lisp như này nhé: trên bản vẽ có rất nhiều text là các số với nhiều giá trị khác nhau. Em cần lọc ra tất cả các số có giá trị lớn hơn( hoặc có cả lựa chọn : nhỏ hơn_do người dùng chọn lựa khi dùng lệnh) 1 giá trị cố định nào đó bằng cách nhập giá trị này vào khi dùng lệnh. ví dụ: em cần tìm tất cả các số lớn hơn 5.00, số 5 là do mình nhập vào.sau khi dùng lệnh xong bản vẽ sẽ hiển thị tất cả các giá trị vừa lọc được. thanks hiu các bác nhìu trước! :s_big: em đang rất cần......
  • 0

Một môn tập luyện mang lại vô vàn lợi ích sức khỏe cho mọi người, nhiều bệnh tật nan y đều được chữa khỏi, hoàn toàn miễn phí. Hiệu quả chữa khỏi bệnh tật của nó lên đến hơn 90%.
Tài liệu tại đây: http://phapluan.org/

Rất vui được làm quen với mọi người trên facebook:
https://www.facebook...67946371&type=1

 

 


#2737 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 01 September 2009 - 11:42 AM

các bác viết giúp em lisp như này nhé: trên bản vẽ có rất nhiều text là các số với nhiều giá trị khác nhau. Em cần lọc ra tất cả các số có giá trị lớn hơn( hoặc có cả lựa chọn : nhỏ hơn_do người dùng chọn lựa khi dùng lệnh) 1 giá trị cố định nào đó bằng cách nhập giá trị này vào khi dùng lệnh. ví dụ: em cần tìm tất cả các số lớn hơn 5.00, số 5 là do mình nhập vào.sau khi dùng lệnh xong bản vẽ sẽ hiển thị tất cả các giá trị vừa lọc được. thanks hiu các bác nhìu trước! :s_big: em đang rất cần......

Bạn sử dụng cái này thử xem :

(defun c:Loctext(/ ss i ent content so ans snho slon)
(setq ss (ssget '((0 . "TEXT"))) snho (ssadd) slon (ssadd))
(setq i 0 s1 0 s2 0)
(initget "L N")
(setq ans (getstring "\n chon so Nho hon N , Chon so Lon hon L : : "))

(if (or (= ans "n") (= ans "N"))
(progn
(setq so (getreal "\n Nhap so nho hon : "))

(while (< i (sslength ss))
(setq ent (ssname ss i))
(if (and (setq content (distof(cdr(assoc 1 (entget ent))))) (< content so))
(setq snho (ssadd ent snho))
)
(setq i (1+ i))
);while
(sssetfirst snho snho)
);progn
);if
(setq i 0)
(if (or (= ans "L") (= ans "l"))
(progn
(setq so (getreal "\n Nhap so lon hon : "))

(while (< i (sslength ss))
(setq ent (ssname ss i))
(if (and (setq content (distof(cdr(assoc 1 (entget ent))))) (> content so))
(setq slon (ssadd ent slon))
)
(setq i (1+ i))
);while
(sssetfirst slon slon)
);progn
);if

(princ)
)
:cheers:
  • 1

#2738 phambr45

phambr45

    Chưa sử dụng CAD

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

Đã gửi 01 September 2009 - 01:18 PM

Bạn sử dụng Code này thử nhé :


(defun c:sxt()
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq ss (ssget '((0 . "TEXT,MTEXT"))))
(command "justifytext" ss "" "BC")

(setq lst (ss2ent ss)
lst (vl-sort lst
'(lambda (e1 e2)
(<
(cadr (assoc 10 (entget e1)))
(cadr (assoc 10 (entget e2)))
)
)
)
)

(setq ddau (cdr(assoc 10 (entget(car lst))))
i 0)

(foreach e lst
(setq ent (entget e))
(setq dcuoi (cdr(assoc 10 ent)))
(setq ddauu (list (car dcuoi) (cadr ddau) 0))
(command "move" e "" dcuoi ddauu)
(setq i (1+ i))
)
(setvar "osmode" oldos)
(Princ)
)
;
(defun ss2ent (ss / sodt index lstent)
(setq
sodt (if ss (sslength ss) 0)
index 0
)
(repeat sodt
(setq ent (ssname ss index)
index (1+ index)
lstent (cons ent lstent)
)
)
(reverse lstent)
)

Thật sự là tuyêt vời.Cảm ơn rất nhiều!
  • 0

#2739 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 01 September 2009 - 01:31 PM

Nhờ các bác cao thủ viết giúp em LISP có yêu cầu như thế này:
1.Khi thực hiện lệnh, ta có thể vẽ đồng thời 2 đường line hay 2 đường polyline, hoặc arc...với khoảng cách của 2 đường và màu sắc có thể thay đổi do người dùng.VD: khi vẽ, tạo ra đồng thời 2 đường line, line 1 màu số 4, line 2 màu số 8
2.Lisp thứ 2 là khi thực hiện ta có thể chon các đối tượng cùng màu để đưa vào 1 lớp.
Thank các bác cao thủ nhiều...


- Lisp 1: Đề thiếu: Khoảng cách giữa 2 đường bằng bao nhiêu? điểm pick để vẽ nằm ở vị trí nào: giữa 2 đường hay thuộc 1 trong 2 đường.
Mà mình nhớ không nhầm thì cad cũng đã có lệnh vẽ các đường song song với nhau. tuy nhiên mình không nhớ lệnh. Với lại việc này có thể vẽ bình thường rồi offset cũng đâu có mất thời gian mấy đâu bạn?
- Lisp 2: bạn có thể dụng lệnh qick select hay lệnh filter.
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#2740 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 01 September 2009 - 01:49 PM

Mà mình nhớ không nhầm thì cad cũng đã có lệnh vẽ các đường song song với nhau. tuy nhiên mình không nhớ lệnh.
- Lisp 2: bạn có thể dụng lệnh qick select hay lệnh filter.

@ Thaistreetz
1. Lệnh Miline
2. lệnh quick select hay lệnh filter : Có thể chọn đối tượng có màu là Bylayer. Nhưng không phân biệt được màu, cái nào là màu xanh, cái nào là màu vàng ......
  • 1