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

#1841 phamngoctukts

phamngoctukts

    biết lệnh adcenter

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

Đã gửi 18 September 2010 - 11:48 PM

Hi bạn.Mình vừa đi xa về.Cám ơn bạn rất nhiều.Nhân tiện cho mình thắc mắc 1 chút.Mình tưởng lệnh fillet thực hiện trước vòng lặp thì ngay cả khi 2 đường biên không giao nhau nó cũng tự fillet rồi mới bắt đầu việc chuyển đầu line vào điểm giao.Nhưng mình test thấy không được.Bạn chỉ giúp mình với nhé :undecided:

Của ban đây. Mình đã sửa lại rồi.

(defun  C:ban2 ()
(command "undo" "be")
(princ "\nChon 2 duong giao nhau: ")
(setq ss1 (ssget '((0 . "line,lwpolyline"))))
(princ "\nChon cac duong muon ban: ")
(setq ss2 (ssget '((0 . "line,lwpolyline"))))
(setq d1 (ssname ss1 0))
(setq d2 (ssname ss1 1))
(command "fillet" "r" "0" "")
(command "fillet" d1 d2)
(setq p1 (cdr (assoc 10 (entget d1))))
(setq p2 (cdr (assoc 11 (entget d1))))
(setq p3 (cdr (assoc 10 (entget d2))))
(setq p4 (cdr (assoc 11 (entget d2))))
(setq gd (inters p1 p2 p3 p4))
(setq i 0)
(while (< i (sslength ss2))
(setq entname (ssname ss2 i)
pb1 (cdr (assoc 10 (entget entname)))
pb2 (cdr (assoc 11 (entget entname)))
l1 (distance pb1 gd)
l2 (distance pb2 gd)
)
(if (< l1 l2)
(progn
(setq thay (subst (cons 10 gd) (cons 10 pb1) (entget entname)))
(entmod thay)
)
(progn
(setq thay (subst (cons 11 gd) (cons 11 pb2) (entget entname)))
(entmod thay)
)
)
(setq i (1+ i))
)
(command "undo" "e")
)

  • 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!

#1842 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 19 September 2010 - 09:16 AM

Tks bạn..Tuyệt vời rồi ^^.Đêm qua mình mệt quá ngủ quên mất,không ngờ bạn fĩx nhanh và nhiệt tình thế :undecided:
  • 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


#1843 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 19 September 2010 - 03:42 PM

Mình đã được các anh em ở đây giúp đỡ khá nhiều rồi,từ hnay sẽ bắt đầu nghiên cứu để hiểu hơn về nó..Biết đâu sau này lại giúp lại được những anh em khác^^.Nhưng học qua ví dụ ứng dụng thực tiễn thì vẫn nhanh hơn,nên sẽ chăm chỉ nhờ vả và hỏi hơn..
Đầu tiên,mình muốn vẽ định vị cột như hình vẽ sau bằng lisp,với một quy cách định trước
Hình đã gửi
Đầu vào :
- Command :dvc
- Nhập tỉ lệ định vẽ.(Tỉ lệ mặc định là 1/20)
- Cạnh a :(user nhập chiều dài thực tế,mặc định là 220) - Ví dụ 300
- Ký hiệu Trục cạnh a(mặc định là -)
- Cạnh b :(user nhập chiều dài thực tế)
- Ký hiệu Trục cạnh b,(mặc định là -)

Sau bước này thì hình chữ nhật định vị cột sẽ hiện ra ở con trỏ chuột và chờ người dùng pick điểm đặt.Điểm đặt là tâm cột (trực quan)

Yêu cầu cần thực hiện :
- Vẽ cột với layer COT,bằng pline hoặc line,nếu layer này chưa có thì tạo layer với tên COT,màu 30,chiều dày nét 0.3mm- Hatch cột vừa tạo bằng pat betong,tỉ lệ hatch 10,góc hatch 0
- Vẽ 2 đường gióng trục cột bằng layer TRUC,cụ thể trục đi qua trung điểm 2 cạnh cột,nếu chưa có thì tạo layer TRUC,màu 251,dày 0.5
Trục thò ra bên ngoài cột 2mm ( chiều dài thực )
- Dim chi tiết từ trục ra cạnh cột,dim tổng thể.Chân dim cách cạnh cột 4mm(chiều dài thực),chân dim dài 5mm(cdài thực).
- Kiểu dim là Dx (với x là tỉ lệ nhập vào từ đầu),layer DIM (nếu chưa có layer và dimstyle này thì tạo ra)
- Ghi chú ký hiệu 2 trục với style chữ GHICHU,layer Text,nếu chưa có thì tạo ra
- Ky hiệu trục nằm trong vòng tròn bán kính 5.75mm (thực).Hình tròn này vẽ bằng layer MANH,màu abc,dày abc..nếu chưa có thì tạo ra
- Vòng tròn ký hiệu nằm cách dim tổng 1 đoạn 2mm,được nối với dim tổng bằng 1 đoạn thẳng với layer THAY,,màu abc,dày abc..nếu chưa có thì tạo ra

- Mục đích học hỏi :
+ Làm sao để vẽ 1 hình chữ nhật,sau đó để tâm HCN vào đầu con trỏ
+ Sau khi tạo ra hcn đó,làm sao để thao tác hatch trực tiếp với đối tượng vừa tạo ra,nhất là nếu vẽ bằng line hứ k phải pline
+ Làm sao để dim 2 đầu mút cạnh hcn,giả sử nó được vẽ bằng pl chứ không phải line ?và với khoảng cách định trước của dim so với đường thẳng,chiều dài chân dim?
+ Làm thế nào để xác định trung điểm đoạn dim ( để ghi ký hiệu)
+ Phần chữ màu nhạt tức là mình có thể giải quyết bằng cách thiết lập ngay từ khi tạo bản vẽ,hoặc tạo 1 file template.
Còn nếu khởi tạo bằng lisp,thì với các hàm con tạo layer theo màu,chều dày nét thì mình đã biết,nhưng với tạo dimstyle thì chưa biết,vì có quá nhiều thiết đặt ở đấy,và mình không biết tìm các biến thiết đặt này ở đâu :undecided:

Tranh thủ CN nên yêu cầu có vẻ dài dòng,rườm rà,mong mọi người giúp mình..:">
File Cad
  • 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


#1844 shockyboy87

shockyboy87

    Chưa sử dụng CAD

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

Đã gửi 19 September 2010 - 07:58 PM

Mình là thành viên mới, vì công việc nên đang xử lý dữ lieu địa hình thô trên autocad. Là người ngoại đạo nên mình không biết về lisp. Sau khi mày mò nhiều đã tìm được 1 lisp phù hợp công việc hiện tại, nhưng khổ nỗi lisp này lại bắt chọn từng điểm. Dữ liệu của mình chứa hàng chục ngàn điểm, nếu chọn từng cái chắc chết mất. Mình up lisp này lên nhờ các bạn xem và có thể modify lại để có thể chọn tất cả các điểm 1 lần hay không.
link: http://www.mediafire...igcli980j9fzi1m
Mong các bạn giúp đỡ.
  • 0

#1845 phamngoctukts

phamngoctukts

    biết lệnh adcenter

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

Đã gửi 19 September 2010 - 09:22 PM

Mình là thành viên mới, vì công việc nên đang xử lý dữ lieu địa hình thô trên autocad. Là người ngoại đạo nên mình không biết về lisp. Sau khi mày mò nhiều đã tìm được 1 lisp phù hợp công việc hiện tại, nhưng khổ nỗi lisp này lại bắt chọn từng điểm. Dữ liệu của mình chứa hàng chục ngàn điểm, nếu chọn từng cái chắc chết mất. Mình up lisp này lên nhờ các bạn xem và có thể modify lại để có thể chọn tất cả các điểm 1 lần hay không.
link: http://www.mediafire...igcli980j9fzi1m
Mong các bạn giúp đỡ.

Ông này vừa lập hẳn 1 topic để hỏi về vấn đề này. Giờ laọi hỏi tiếp ở đây...
  • 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!

#1846 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 19 September 2010 - 10:31 PM

Mình là thành viên mới, vì công việc nên đang xử lý dữ lieu địa hình thô trên autocad. Là người ngoại đạo nên mình không biết về lisp. Sau khi mày mò nhiều đã tìm được 1 lisp phù hợp công việc hiện tại, nhưng khổ nỗi lisp này lại bắt chọn từng điểm. Dữ liệu của mình chứa hàng chục ngàn điểm, nếu chọn từng cái chắc chết mất. Mình up lisp này lên nhờ các bạn xem và có thể modify lại để có thể chọn tất cả các điểm 1 lần hay không.
link: http://www.mediafire...igcli980j9fzi1m
Mong các bạn giúp đỡ.

Chào bạn shockyboy87,
Bạn là thành viên mới, rất mong bạn tôn trọng nội quy diễn đàn, lần sau nếu bạn tiếp tục post cùng một vấn đề trên nhiều topic khác nhau, bạn sẽ bị xóa bài post đó.
Chúc bạn vui khi tham gia diễn đàn.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#1847 dkkx3a

dkkx3a

    biết lệnh trim

  • Members
  • PipPipPip
  • 190 Bài viết
Điểm đánh giá: 57 (tàm tạm)

Đã gửi 20 September 2010 - 08:16 AM

Cảm ơn bạn rất nhiều nhưng trong lisp của bạn cho gán tên layer cho đường thằng và solid nhưng sao không cho gán tên layer cho TEXT 0.00 .Mong bạn giúp giùm.

Bạn muốn gán Layer gì cho nó, do trong lisp kia là layer "ghichu" mà, nếu muốn bạn có thể dùng lệnh BATTMAN của cad để chỉnh, nếu có định một layer thì viết cụ thể nhé, nếu làm được mình sẽ giúp. (@PS: cuối tuần về nhà không có mạng nên không xem bài của bạn được. SR)
  • 0
TỰ SỰ
Biển vào chiều buồn giữa cô liêu
Sóng vỗ bờ bạc đầu con nước
Khi biển động như lòng ta chợt động
Biển ồn ào nhưng thực rất dịu êm.......

#1848 790312

790312

    biết lệnh fillet

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

Đã gửi 20 September 2010 - 08:40 AM

Cảm ơn bạn trước,mấy đổi mấy layer kia thì mình làm được nhưng layer cho 0.00 thì không làm được,thí dụ mình muốn gán cho nó là layer TEXT chẳng hạn.
  • 0

#1849 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 20 September 2010 - 09:52 AM

Mình đã được các anh em ở đây giúp đỡ khá nhiều rồi,từ hnay sẽ bắt đầu nghiên cứu để hiểu hơn về nó..Biết đâu sau này lại giúp lại được những anh em khác^^.Nhưng học qua ví dụ ứng dụng thực tiễn thì vẫn nhanh hơn,nên sẽ chăm chỉ nhờ vả và hỏi hơn..
Đầu tiên,mình muốn vẽ định vị cột như hình vẽ sau bằng lisp,với một quy cách định trước
Hình đã gửi
Đầu vào :
- Command :dvc
- Nhập tỉ lệ định vẽ.(Tỉ lệ mặc định là 1/20)
- Cạnh a :(user nhập chiều dài thực tế,mặc định là 220) - Ví dụ 300
- Ký hiệu Trục cạnh a(mặc định là -)
- Cạnh b :(user nhập chiều dài thực tế)
- Ký hiệu Trục cạnh b,(mặc định là -)

Sau bước này thì hình chữ nhật định vị cột sẽ hiện ra ở con trỏ chuột và chờ người dùng pick điểm đặt.Điểm đặt là tâm cột (trực quan)

Yêu cầu cần thực hiện :
- Vẽ cột với layer COT,bằng pline hoặc line,nếu layer này chưa có thì tạo layer với tên COT,màu 30,chiều dày nét 0.3mm- Hatch cột vừa tạo bằng pat betong,tỉ lệ hatch 10,góc hatch 0
- Vẽ 2 đường gióng trục cột bằng layer TRUC,cụ thể trục đi qua trung điểm 2 cạnh cột,nếu chưa có thì tạo layer TRUC,màu 251,dày 0.5
Trục thò ra bên ngoài cột 2mm ( chiều dài thực )
- Dim chi tiết từ trục ra cạnh cột,dim tổng thể.Chân dim cách cạnh cột 4mm(chiều dài thực),chân dim dài 5mm(cdài thực).
- Kiểu dim là Dx (với x là tỉ lệ nhập vào từ đầu),layer DIM (nếu chưa có layer và dimstyle này thì tạo ra)
- Ghi chú ký hiệu 2 trục với style chữ GHICHU,layer Text,nếu chưa có thì tạo ra
- Ky hiệu trục nằm trong vòng tròn bán kính 5.75mm (thực).Hình tròn này vẽ bằng layer MANH,màu abc,dày abc..nếu chưa có thì tạo ra
- Vòng tròn ký hiệu nằm cách dim tổng 1 đoạn 2mm,được nối với dim tổng bằng 1 đoạn thẳng với layer THAY,,màu abc,dày abc..nếu chưa có thì tạo ra

- Mục đích học hỏi :
+ Làm sao để vẽ 1 hình chữ nhật,sau đó để tâm HCN vào đầu con trỏ
+ Sau khi tạo ra hcn đó,làm sao để thao tác hatch trực tiếp với đối tượng vừa tạo ra,nhất là nếu vẽ bằng line hứ k phải pline
+ Làm sao để dim 2 đầu mút cạnh hcn,giả sử nó được vẽ bằng pl chứ không phải line ?và với khoảng cách định trước của dim so với đường thẳng,chiều dài chân dim?
+ Làm thế nào để xác định trung điểm đoạn dim ( để ghi ký hiệu)
+ Phần chữ màu nhạt tức là mình có thể giải quyết bằng cách thiết lập ngay từ khi tạo bản vẽ,hoặc tạo 1 file template.
Còn nếu khởi tạo bằng lisp,thì với các hàm con tạo layer theo màu,chều dày nét thì mình đã biết,nhưng với tạo dimstyle thì chưa biết,vì có quá nhiều thiết đặt ở đấy,và mình không biết tìm các biến thiết đặt này ở đâu :(

Tranh thủ CN nên yêu cầu có vẻ dài dòng,rườm rà,mong mọi người giúp mình..:">
File Cad

Chào bạn ketxu,
Yêu cầu của bạn không khó. Tuy nhiên do bạn muốn "từ hnay sẽ bắt đầu nghiên cứu để hiểu hơn về nó..Biết đâu sau này lại giúp lại được những anh em khác^^", nên không ai có thể gạt bỏ cái ước muốn ấy của bạn.
Vậy bạn hãy bắt tay vào làm đi nhé. Bắt đầu từ bước đầu tiên là tạo cho được cái hình chữ nhật có định vị ở tâm. Mình chưa hiểu hết ý định của bạn song có nhẽ chả cần cái định vị ở tâm này. Vấn đề bạn cần là copy hay move cái hình chữ nhật này sao cho cái tâm của nó về trúng cái vị trí mà bạn pick. Do đó theo ngu ý của mình thì khi copy hay move bạn chỉ cần lấy điểm gốc của cái sự copy hay move ấy chính là cái tâm hình chữ nhật là OK bạn ạ. Như vậy thì hình như nó sẽ đơng giản hơn cái vụ phải có cái tâm của hình chữ nhật bạn ạ.
Hề hề hề. vài lời góp ý mong bạn chóng thành công.....
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#1850 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 20 September 2010 - 10:01 AM

Cảm ơn bạn trước,mấy đổi mấy layer kia thì mình làm được nhưng layer cho 0.00 thì không làm được,thí dụ mình muốn gán cho nó là layer TEXT chẳng hạn.

Chào bạn 790312,
Bạn hãy xem kỹ cái lisp của bác dkk3a đi. Cái text 0.00 của bác ấy là một attdef cơ mà. Nếu bạn muốn thay đổi lớp của nó thì phải thay đổi trong hàm tạo attdef chứ làm sao thay đổi nó trực tiếp trên bản vẽ được?????
Bạn hãy tìm hiểu kỹ hơn về các attdef sẽ hiểu, còn lisp của bác dkk3a đã làm đúng ý bạn rồi đó.....
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#1851 dkkx3a

dkkx3a

    biết lệnh trim

  • Members
  • PipPipPip
  • 190 Bài viết
Điểm đánh giá: 57 (tàm tạm)

Đã gửi 20 September 2010 - 10:31 AM

Cảm ơn bạn trước,mấy đổi mấy layer kia thì mình làm được nhưng layer cho 0.00 thì không làm được,thí dụ mình muốn gán cho nó là layer TEXT chẳng hạn.

Bạn dùng lệnh Battman cho nhanh bạn ah, nếu bạn muốn sửa cố định luôn nó là layer TEXT thì cũng được (cái này thì bổ sung mã lisp), nếu dùng Battman thì bạn cứ làm như sau: (nếu bạn chưa biết!!!)
.......Bấm lệnh BATTMAN
sau đó:

Hình đã gửi

Và OKKKK!!!
  • 0
TỰ SỰ
Biển vào chiều buồn giữa cô liêu
Sóng vỗ bờ bạc đầu con nước
Khi biển động như lòng ta chợt động
Biển ồn ào nhưng thực rất dịu êm.......

#1852 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 20 September 2010 - 10:57 AM

Chào bạn ketxu,
Yêu cầu của bạn không khó. Tuy nhiên do bạn muốn "từ hnay sẽ bắt đầu nghiên cứu để hiểu hơn về nó..Biết đâu sau này lại giúp lại được những anh em khác^^", nên không ai có thể gạt bỏ cái ước muốn ấy của bạn.
Vậy bạn hãy bắt tay vào làm đi nhé. Bắt đầu từ bước đầu tiên là tạo cho được cái hình chữ nhật có định vị ở tâm. Mình chưa hiểu hết ý định của bạn song có nhẽ chả cần cái định vị ở tâm này. Vấn đề bạn cần là copy hay move cái hình chữ nhật này sao cho cái tâm của nó về trúng cái vị trí mà bạn pick. Do đó theo ngu ý của mình thì khi copy hay move bạn chỉ cần lấy điểm gốc của cái sự copy hay move ấy chính là cái tâm hình chữ nhật là OK bạn ạ. Như vậy thì hình như nó sẽ đơng giản hơn cái vụ phải có cái tâm của hình chữ nhật bạn ạ.
Hề hề hề. vài lời góp ý mong bạn chóng thành công.....

Vấn đề là khi tạo ra cột định vị,điểm chèn thường là tâm của cột,tại chỗ giao nhau của các cột.Mình muốn hình sẽ pause tại tâm chuột để mình chỉ kick vào giao điểm của các trục thôi.Còn nều tạo xong mới copy xong move thì...^^
THứ 2 nữa,mình phân vân không biết nếu vẽ cột bằng line thì có thể thực hiện việc đó khôngMong mọi người chỉ bảo
  • 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


#1853 790312

790312

    biết lệnh fillet

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

Đã gửi 20 September 2010 - 11:20 AM

Bạn dùng lệnh Battman cho nhanh bạn ah, nếu bạn muốn sửa cố định luôn nó là layer TEXT thì cũng được (cái này thì bổ sung mã lisp), nếu dùng Battman thì bạn cứ làm như sau: (nếu bạn chưa biết!!!)
.......Bấm lệnh BATTMAN
sau đó:

Hình đã gửi

Và OKKKK!!!

Nếu rảnh bạn sửa cố định giùm mình luôn được không?Vì mình cũng đang tìm hiểu về lisp.Thanks
  • 0

#1854 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 20 September 2010 - 11:25 AM

Vấn đề là khi tạo ra cột định vị,điểm chèn thường là tâm của cột,tại chỗ giao nhau của các cột.Mình muốn hình sẽ pause tại tâm chuột để mình chỉ kick vào giao điểm của các trục thôi.Còn nều tạo xong mới copy xong move thì...^^
THứ 2 nữa,mình phân vân không biết nếu vẽ cột bằng line thì có thể thực hiện việc đó khôngMong mọi người chỉ bảo

1. Bạn chọn 1 điểm tâm -> Sử dụng hàm getpoint
2. Xác định điểm góc trái bên dưới (từ điểm tâm, từ chiều dài, chiều rộng cột)
3. Vẽ hình chữ nhật bằng Line hay Pline hoặc Rectang
  • 0

#1855 dkkx3a

dkkx3a

    biết lệnh trim

  • Members
  • PipPipPip
  • 190 Bài viết
Điểm đánh giá: 57 (tàm tạm)

Đã gửi 20 September 2010 - 12:05 PM

Nếu rảnh bạn sửa cố định giùm mình luôn được không?Vì mình cũng đang tìm hiểu về lisp.Thanks

Lisp này các Text tạo ra nằm trong layer "TEXT":

(DEFUN C:CT (/ PT1 TSIZE STR PRMT layerold)
(SETVAR "CMDECHO" 0)
(setvar "ATTMODE" 1)
(setvar "attdia" 0)
(setvar "attreq" 1)
(setq layerold (getvar "clayer"))
(if (not (tblsearch "layer" "ghichu"))
(command "layer" "m" "ghichu" "c" "150" """")
)
(if (not (tblobjname "block" "CTrinh"))
(taobl)
)
(SETQ PT1 (GETPOINT "\nDiem cao trinh:"))
(if (not TSIZE1)
(SETQ TSIZE1 (GETVAR "TEXTSIZE"))
)
(SETQ STR (RTOS TSIZE1 2)
PRMT (STRCAT "\nText height <" STR ">:")
TSIZE (GETDIST PRMT)
)
(if (not TSIZE)
(SETQ TSIZE TSIZE1)
(SETQ TSIZE1 TSIZE)
)
(PRINC "\n")
(command "-insert" "CTrinh" PT1 TSIZE "" "0")
(setvar "clayer" layerold)
(PRINC)
)
;---------------------
(defun taobl()
(entmake '((0 . "BLOCK")(2 . "CTrinh")(70 . 2)(10 0.0 0.0 0.0)))
(entmake
'((0 . "LINE")(62 . 150)(8 . "ghichu")
(10 -1.0 0.0 0.0)(11 1.0 0.0 0.0)))
(entmake
'((0 . "LINE")(62 . 7)(8 . "ghichu")
(10 0.0 0.0 0.0)(11 1.0 0.5 0.0)))
(entmake
'((0 . "LINE")(62 . 7)(8 . "ghichu")
(10 1.0 0.5 0.0)(11 -1.0 0.5 0.0)))
(entmake
'((0 . "LINE")(62 . 150)(8 . "ghichu")
(10 0.0 0.0 0.0)(11 0.0 3.0 0.0)))
(entmake
'((0 . "LINE")(62 . 150)(8 . "ghichu")
(10 -1.0 1.0 0.0)(11 4.5 1.0 0.0)))
(entmake
'((0 . "SOLID")(62 . 7)(8 . "ghichu")
(10 0.0 0.0 0.0)(11 0.0 0.5 0.0)
(12 -1.0 0.5 0.0)(13 0.0 0.5 0.0)
(39 . 0.0)))

(if (not tenlayer1)(setq tenlayer1 "TEXT"))
(setq tenlayer (getstring T (strcat "\nNhap ten layer cua TEXT cao trinh [" tenlayer1 "]: ")))
(if (/= tenlayer "")(setq tenlayer1 tenlayer)(setq tenlayer tenlayer1))
(if (not (tblsearch "layer" tenlayer))
(command "layer" "m" tenlayer "c" "84" """")
)
(entmake
(list
(cons 0 "ATTDEF")
(cons 8 tenlayer)
(cons 10 '(0.25 1.50 0.0))
(cons 1 "0.00")
(cons 2 "CT_ID")
(cons 3 "Gia_tri_cao_trinh:")
(cons 40 1.0)
(cons 41 1.0)
(cons 50 0.0)
(cons 70 0)
(cons 71 0)
(cons 72 0)
(cons 73 0)))
(entmake '((0 . "ENDBLK")))
(setq tenlayer nil)
(princ)
)
;---------------------


Hi vọng đúng ý bạn.........

Bài viết đã được chỉnh sửa nội dung bởi dkkx3a: 20 September 2010 - 12:49 PM

  • 1
TỰ SỰ
Biển vào chiều buồn giữa cô liêu
Sóng vỗ bờ bạc đầu con nước
Khi biển động như lòng ta chợt động
Biển ồn ào nhưng thực rất dịu êm.......

#1856 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 20 September 2010 - 12:30 PM

Không phải thế đâu bác Bình ạ. Cùng lisp trên nếu vẽ cung ngửa lên trên hoặc úp xuống là tâm nó bị lộn ngược ngay. Nên em cũng không hiểu chỗ này.

Chào bác Phamngoctukts,
Bác thử kiểm tra cái này xem nhé. Mình dùng nó chả bao giờ thấy nó chọn sai tâm cung cong cả bác ạ.

(defun c:getcen ()
(vl-load-com)
(setq obj (vlax-ename->vla-object (car (entsel "/n Chon duong cong can xac dinh tam ")))
par (vlax-curve-getparamatpoint obj (getpoint "\n Chon diem can xac dinh tam cong tren duong cong: "))
tam (mapcar '+ (vlax-curve-getsecondderiv obj par) (vlax-curve-getpointatparam obj par))
)
tam
(princ)
)


Qua đây chắc bác hiểu cái lý do mà tâm của bác bị lộn tu bác hỉ?????
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#1857 790312

790312

    biết lệnh fillet

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

Đã gửi 20 September 2010 - 01:19 PM

Lisp này các Text tạo ra nằm trong layer "TEXT":


(DEFUN C:CT (/ PT1 TSIZE STR PRMT layerold)
(SETVAR "CMDECHO" 0)
(setvar "ATTMODE" 1)
(setvar "attdia" 0)
(setvar "attreq" 1)
(setq layerold (getvar "clayer"))
(if (not (tblsearch "layer" "ghichu"))
(command "layer" "m" "ghichu" "c" "150" """")
)
(if (not (tblobjname "block" "CTrinh"))
(taobl)
)
(SETQ PT1 (GETPOINT "\nDiem cao trinh:"))
(if (not TSIZE1)
(SETQ TSIZE1 (GETVAR "TEXTSIZE"))
)
(SETQ STR (RTOS TSIZE1 2)
PRMT (STRCAT "\nText height <" STR ">:")
TSIZE (GETDIST PRMT)
)
(if (not TSIZE)
(SETQ TSIZE TSIZE1)
(SETQ TSIZE1 TSIZE)
)
(PRINC "\n")
(command "-insert" "CTrinh" PT1 TSIZE "" "0")
(setvar "clayer" layerold)
(PRINC)
)
;---------------------
(defun taobl()
(entmake '((0 . "BLOCK")(2 . "CTrinh")(70 . 2)(10 0.0 0.0 0.0)))
(entmake
'((0 . "LINE")(62 . 150)(8 . "ghichu")
(10 -1.0 0.0 0.0)(11 1.0 0.0 0.0)))
(entmake
'((0 . "LINE")(62 . 7)(8 . "ghichu")
(10 0.0 0.0 0.0)(11 1.0 0.5 0.0)))
(entmake
'((0 . "LINE")(62 . 7)(8 . "ghichu")
(10 1.0 0.5 0.0)(11 -1.0 0.5 0.0)))
(entmake
'((0 . "LINE")(62 . 150)(8 . "ghichu")
(10 0.0 0.0 0.0)(11 0.0 3.0 0.0)))
(entmake
'((0 . "LINE")(62 . 150)(8 . "ghichu")
(10 -1.0 1.0 0.0)(11 4.5 1.0 0.0)))
(entmake
'((0 . "SOLID")(62 . 7)(8 . "ghichu")
(10 0.0 0.0 0.0)(11 0.0 0.5 0.0)
(12 -1.0 0.5 0.0)(13 0.0 0.5 0.0)
(39 . 0.0)))

(if (not tenlayer1)(setq tenlayer1 "TEXT"))
(setq tenlayer (getstring T (strcat "\nNhap ten layer cua TEXT cao trinh [" tenlayer1 "]: ")))
(if (/= tenlayer "")(setq tenlayer1 tenlayer)(setq tenlayer tenlayer1))
(if (not (tblsearch "layer" tenlayer))
(command "layer" "m" tenlayer "c" "84" """")
)
(entmake
(list
(cons 0 "ATTDEF")
(cons 8 tenlayer)
(cons 10 '(0.25 1.50 0.0))
(cons 1 "0.00")
(cons 2 "CT_ID")
(cons 3 "Gia_tri_cao_trinh:")
(cons 40 1.0)
(cons 41 1.0)
(cons 50 0.0)
(cons 70 0)
(cons 71 0)
(cons 72 0)
(cons 73 0)))
(entmake '((0 . "ENDBLK")))
(setq tenlayer nil)
(princ)
)
;---------------------


Hi vọng đúng ý bạn.........

Đúng rồi nhưng sao nó không tự tạo font do mình định sẵn mà mặc định là font standard vậy bạn.Thanks
  • 0

#1858 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 20 September 2010 - 02:02 PM

Đúng rồi nhưng sao nó không tự tạo font do mình định sẵn mà mặc định là font standard vậy bạn.Thanks

Chào bạn 790312,
Nó không tự tạo vì bạn không yêu cầu.
Là một cán bộ kỹ thuật , bạn nên hiểu rõ cái mình cần và đặt vấn đề cho nó mạch lạc, dứt khoát, đừng có lắt nhắt như trẻ con vậy. Mọi người không phải là bạn nên chả ai có thể hiểu bạn cần cái gì mà làm cho đúng ý bạn được. Cứ sau mỗi một lần bạn lại đẻ ra một thứ yêu cầu mới kiểu đó thì tốt nhất bạn hãy tự học lisp để mà có thể làm được theo đúng ý bạn hoặc ít nhất cũng có thể tự sửa những cái mọi người đã giúp thành cái mình muốn. Bạn muốn mọi người giúp đỡ bạn thì bạn phải biết cách tôn trọng và thông cảm với người giúp bạn bạn ạ. Đừng có ỷ lại quá mức vào người khác bạn ạ.....
Mong rằng bạn hãy cố gắng tự vận động nhiều hơn....
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#1859 790312

790312

    biết lệnh fillet

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

Đã gửi 20 September 2010 - 02:16 PM

Mỗi lần sử dụng mình lại phát hiện 1 cái chưa đầy đủ,biết là làm vậy cũng hơi phiền mọi người.Có gì bỏ qua cho mình.Thanks.
  • 0

#1860 dkkx3a

dkkx3a

    biết lệnh trim

  • Members
  • PipPipPip
  • 190 Bài viết
Điểm đánh giá: 57 (tàm tạm)

Đã gửi 20 September 2010 - 03:57 PM

Mỗi lần sử dụng mình lại phát hiện 1 cái chưa đầy đủ,biết là làm vậy cũng hơi phiền mọi người.Có gì bỏ qua cho mình.Thanks.

Bác Bình dạy chí phải bạn ạ, vừa mất công vừa phát sinh nhiều bài trả lời, bạn tham khảo cái này nhé, mới chỉnh lại cho bạn nè:

(DEFUN C:CT (/ CMD NBC OSM PT1 TSIZE STR PRMT layerold)
(setvar "cmdecho" 0)
(setvar "ATTMODE" 1)(setvar "attdia" 0)(setvar "attreq" 1)
(setq layerold (getvar "clayer"))
(if (not (tblsearch "layer" "ghichu"))
(entmake (list (cons 0 "LAYER")
(cons 100 "AcDbSymbolTableRecord")
(cons 100 "AcDbLayerTableRecord")
(cons 2 "ghichu")
(cons 62 150)
(cons 70 0)
)
)
)
(if (not (tblobjname "block" "CTrinh"))
(taobl)
)
(SETQ PT1 (GETPOINT "\nDiem cao trinh:"))
(if (not TSIZE1)
(SETQ TSIZE1 (GETVAR "TEXTSIZE"))
)
(SETQ STR (RTOS TSIZE1 2)
PRMT (STRCAT "\nText height <" STR ">:")
TSIZE (GETDIST PRMT)
)
(if (not TSIZE)
(SETQ TSIZE TSIZE1)
(SETQ TSIZE1 TSIZE)
)
(PRINC "\n")
(command "-insert" "CTrinh" PT1 TSIZE "" "0")
(setvar "clayer" layerold)
(PRINC)
)
;---------------------
(defun taobl()
;-------------------TAO LAYER
(if (not tenlayer1)(setq tenlayer1 "TEXT"))
(setq tenlayer (getstring T (strcat "\nNhap ten layer cua TEXT cao trinh [" tenlayer1 "]: ")))
(if (/= tenlayer "")(setq tenlayer1 tenlayer)(setq tenlayer tenlayer1))
(if (not (tblsearch "layer" tenlayer))
(entmake (list (cons 0 "LAYER")
(cons 100 "AcDbSymbolTableRecord")
(cons 100 "AcDbLayerTableRecord")
(cons 2 tenlayer)
(cons 62 84)
(cons 70 0)
)
)
)
;-------------------TAO STYLE
(if (not tenstyle1)(setq tenstyle1 "BEO"))
(setq tenstyle (getstring T (strcat "\nNhap ten layer cua StyleText cao trinh [" tenstyle1 "]: ")))
(if (/= tenstyle "")(setq tenstyle1 tenstyle)(setq tenstyle tenstyle1))
(if (not (tblsearch "style" tenstyle))
(entmake (list (cons 0 "STYLE")
(cons 100 "AcDbSymbolTableRecord")
(cons 100 "AcDbTextStyleTableRecord")
(cons 2 tenstyle)
(cons 3 "VHARIAL.TTF")
(cons 70 0)
)
)
)
(entmake '((0 . "BLOCK")(2 . "CTrinh")(70 . 2)(10 0.0 0.0 0.0)))
(entmake
'((0 . "LINE")(62 . 150)(8 . "ghichu")
(10 -1.0 0.0 0.0)(11 1.0 0.0 0.0)))
(entmake
'((0 . "LINE")(62 . 7)(8 . "ghichu")
(10 0.0 0.0 0.0)(11 1.0 0.5 0.0)))
(entmake
'((0 . "LINE")(62 . 7)(8 . "ghichu")
(10 1.0 0.5 0.0)(11 -1.0 0.5 0.0)))
(entmake
'((0 . "LINE")(62 . 150)(8 . "ghichu")
(10 0.0 0.0 0.0)(11 0.0 3.0 0.0)))
(entmake
'((0 . "LINE")(62 . 150)(8 . "ghichu")
(10 -1.0 1.0 0.0)(11 4.5 1.0 0.0)))
(entmake
'((0 . "SOLID")(62 . 7)(8 . "ghichu")
(10 0.0 0.0 0.0)(11 0.0 0.5 0.0)
(12 -1.0 0.5 0.0)(13 0.0 0.5 0.0)
(39 . 0.0)))
(entmake
(list
(cons 0 "ATTDEF")
(cons 8 tenlayer)
(cons 10 '(0.25 1.50 0.0))
(cons 1 "0.00")
(cons 2 "CT_ID")
(cons 3 "Gia_tri_cao_trinh:")
(cons 7 tenstyle)
(cons 40 1.0)
(cons 41 1.0)
(cons 50 0.0)
(cons 70 0)
(cons 71 0)
(cons 72 0)
(cons 73 0)))
(entmake '((0 . "ENDBLK")))
(setq tenlayer nil tenstyle nil)
(princ)
)
;---------------------

  • 0
TỰ SỰ
Biển vào chiều buồn giữa cô liêu
Sóng vỗ bờ bạc đầu con nước
Khi biển động như lòng ta chợt động
Biển ồn ào nhưng thực rất dịu êm.......