Đến nội dung


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

[Đã xong] Lisp rải đối tượng theo đơờng dẩn.


  • Please log in to reply
88 replies to this topic

#41 hdg2318

hdg2318

    biết lệnh mirror

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

Đã gửi 07 June 2011 - 12:41 PM

các bác xem cái hình rải đối tượng trong cad 2012
Hình đã gửi
  • 2

Có 2 cách để nhìn đời:
1 là : coi như chẳng có gì là huyền diệu
2 là : coi như mọi điều đều huyền diệu


Click here


#42 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 07 June 2011 - 03:01 PM

các bác xem cái hình rải đối tượng trong cad 2012
Hình đã gửi

Hề hề hề,
Rằng hay thì thiệt là hay,
Xem xong ngậm đắng nuốt cay mà ..... thèm.
Giá như bác gửi cả cho cái phần mềm đó thì tốt quá. chả biết nó dùng lisp hay là lại file vlx nhể....
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#43 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 07 June 2011 - 03:43 PM

Nó là chức năng của CAD12 bác BÌNh ạ :)
  • 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


#44 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 08 June 2011 - 10:31 AM

Nó là chức năng của CAD12 bác BÌNh ạ :)

Nghe giang hồ đồn là cad2012 đòi quả ram 2G mà máy cơ quan toàn còi. Thấy nó liên kết và chỉnh được khoảng cách luôn thấy thèm quá.
  • 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


#45 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 08 June 2011 - 10:41 AM

Thực chất nếu bản vẽ nhẹ nhàng thì chỉ cần 1G cũng xài tốt bác ạ. E cũng thi thoảng bật lên để nghịch, rồi lại thoát ra ^^ (gặp mấy bản vẽ của các bác Quy Hoạch thì sấp mặt mà khó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


#46 hoan2182

hoan2182

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2646 Bài viết
Điểm đánh giá: 832 (rất tốt)

Đã gửi 08 June 2011 - 02:04 PM

Thực chất nếu bản vẽ nhẹ nhàng thì chỉ cần 1G cũng xài tốt bác ạ. E cũng thi thoảng bật lên để nghịch, rồi lại thoát ra ^^ (gặp mấy bản vẽ của các bác Quy Hoạch thì sấp mặt mà khóc )

Những điểm mới lạ trong AutoCAD 2012
Sơ lược về những đổi mới của AutoCAD 2012:
Ngày 22/3/2011, hãng Autodesk đã cho ra mắt phiên bản AutoCAD 2012 v18.2. Đây là phiên bản được nhận xét là kết hợp Array, không gian dữ liệu.
Trước hết là về định dạng file Acad:
Định dạng file giống với định dang file AutoCAD 2010.
Giao diện người sử dụng:
Sự thay đổi đầu tiên mà các bạn thấy là sự chuyển đổi giữa các tab ribbon đã nhanh hơn rất nhiều, không còn chậm chạm như các phiên bản AutoCAD 2009, 2010, 2011. Nghĩa là các bạn để con chuột vào tab ribbon và di chuột thì các bạn thấy chuyển đối giữa các tab ribbon rất nhanh
Nội dung trong tab ribbon đã có sự thay đổi, cụ thể là đã có thêm ứng dụng mới trong công cụ Draw và Modify.
Khởi động AutoCAD 2012 nhanh hơn so với các phiên bản trước đó.
Một chức năng mới trong AutoCAD 2012 là AutoComplete Command (tự động nhận dạng câu lệnh). Nếu bạn nhập vào một lệnh PUB thì AutoCAD 2012 sẽ cho ra một loạt danh sách có lệnh bắt đầu bằng PUB. AutoCAD 2012 cũng chấp nhận ký tự đại diện, nghĩa là nếu bạn chỉ nhớ câu lệnh đó có chữ N đầu tiên và lệnh đó có 3 ký tự thì bạn chỉ cần nhập N??, ngay lập tức AutoCAD sẽ liệt kê danh sách lệnh cho bạn. Rất hữu ích đúng không các bạn .

Chức năng mới nữa trong AutoCAD 2012 là chức năng Explorer. Chức năng này cho phép bạn tìm kiếm về dữ liệu AutoCAD trong máy tính cũng như trên mạng. Nó cũng cho phép bạn truy cập dữ liệu từ AutoDesk tìm kiếm.

Các tính năng về hiệu chỉnh nóng Grips đã được giới thiệu trong AutoCAD 2011, nay được nâng cấp thêm ở AutoCAD 2012 dành cho các đối tượng như: lines, dimensions, mleaders, arcs.

Một sự thay đổi trong AutoCAD 2012 nữa đó là chế độ SNAP chỉ tự động bắt điểm lưới khi bạn kích chọn 1 điểm, do đó bạn có thể di con trỏ một cách tự do trên giao diện người sử dụng mà không bị nhảy theo bước nhảy đã cài đặt. Các phiên bản trước đó, khi bạn bật chế độ SNAP thì con trỏ cứ giật giật nhảy bước khi bạn di chuyển nó.
Bốn nhóm công cụ trong Groups đã được xếp cùng nhau trên 1 ribbon

Bạn có thể chọn và thay đổi trực tiếp UCS trên ngay giao diện người sử dụng bằng cách nhấp chọn và nó sẽ hiển thị các chức năng chỉnh sửa cho bạn

Bạn có thể điều chỉnh cấu hình khung nhìn, hướng nhìn, và phong cách trực quan ngay trong viewport.
Sáng tạo và sửa đổi đối tượng:
Lệnh ARRAY cũ đã được nâng cấp. Bây giờ, khi bạn bắt đầu câu lệnh nó nhắc nhở cho đối tượng array, hay kiểu array (Rectangular, Polar, new Path). Ngay sau khi bạn trả lời, Array được xây dựng trên màn hình trong chế độ xem trước. Bạn có thể kéo con trỏ đến kích thước của Array hoặc cung cấp đầu vào chi tiết tại các dòng lệnh. Khi bạn làm xong kết quả là một ARRAY mới thực tế. Bạn có thể điều chỉnh các thuộc tính của mảng trên màn hình hoặc hộp thoại thuộc tính. Các tùy chọn đường dẫn mới cũng tương tự như các lệnh MEASURE hoặc DIVIDE, ngoại trừ kết quả cũng là một ARRAY kết hợp.

Lệnh BLEND giúp spline tiếp tuyến được giữa hai đường cong, giống như polylines, lines, arc, và các đường spline khác.
Kích thước các menu ngữ cảnh hiện nay bao gồm một tùy chọn để loại bỏ phong cách ghi đè.

Mleader cải tiến:
Các FILLET và CHAMFER, lệnh này bao gồm một bản xem trước kết quả, cho phép bạn thay đổi khoảng cách bán kính FILLET hay CHAMFER trước khi bạn hoàn thành các lệnh. Điều này cũng hoạt động trên polylines, và bạn có thể FILLET đường splines

Raster đã được mở rộng bao gồm nhiều định dạng mới, bao gồm MrSID, ECW, và JPEG2000
Mtext sẽ nhớ sử dụng các cài đặt mới nhất thay vì luôn mặc định số 1,5 và nền màu đỏ.
Lệnh EXTEND sẽ hỗ trợ cho cả các đường Splines.
Các lệnh JOIN đã được thay đổi để bạn không cần phải chọn một đối tượng bắt đầu, chỉ cần chọn tất cả các đối tượng tham gia.
Lệnh COPY hiện nay cho phép bạn tạo ra một mảng kết hợp không tuyến tính. Không nên nhầm lẫn điều này với các lệnh thay đổi mảng ở trên. Kết quả cuối cùng ở đây chỉ đơn giản là bản sao của đối tượng gốc.

Hiện bây giờ là một tùy chọn để đóng băng một lớp ở tất cả các Viewports trừ một hiện tại. Điều này được tìm thấy bên trong lớp quản lý hoặc sử dụng lệnh VPLAYER.
Bây giờ bao gồm xây dựng một trong chuyển đổi hàng loạt bản vẽ, được sử dụng để lưu bản vẽ xuống nhiều tất cả các cách để định dạng R2000. Cơ bản giống như DWG TrueConvert và cùng công cụ DWG Trueview.
Overkill đã được tích hợp vào AutoCAD. Lệnh này được sử dụng để xóa các bản sao các đối tượng, và sửa lỗi hình học khác.
AutoCAD WS hỗ trợ được xây dựng để bạn có thể xuất bản vẽ của bạn lên web với một cú nhấp chuột.
Có ± 70 lệnh mới hoặc thay đổi, và ± 40 biến hệ thống mới hoặc thay đổi. Hai lệnh (BLIPMODE và DSVIEWER ) và sáu biến hệ thống đã được loại bỏ.
Sưu tầm lượm lặt
  • 2

Gió đưa cây cải về trời

Rau răm ở lại chịu lời đắng cay...


#47 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 08 June 2011 - 03:31 PM

Những điểm mới lạ trong AutoCAD 2012
Sơ lược về những đổi mới của AutoCAD 2012:
Ngày 22/3/2011, hãng Autodesk đã cho ra mắt phiên bản AutoCAD 2012 v18.2. Đây là phiên bản được nhận xét là kết hợp Array, không gian dữ liệu.
Trước hết là về định dạng file Acad:
Định dạng file giống với định dang file AutoCAD 2010.
Giao diện người sử dụng:
Sự thay đổi đầu tiên mà các bạn thấy là sự chuyển đổi giữa các tab ribbon đã nhanh hơn rất nhiều, không còn chậm chạm như các phiên bản AutoCAD 2009, 2010, 2011. Nghĩa là các bạn để con chuột vào tab ribbon và di chuột thì các bạn thấy chuyển đối giữa các tab ribbon rất nhanh
Nội dung trong tab ribbon đã có sự thay đổi, cụ thể là đã có thêm ứng dụng mới trong công cụ Draw và Modify.
Khởi động AutoCAD 2012 nhanh hơn so với các phiên bản trước đó.
Một chức năng mới trong AutoCAD 2012 là AutoComplete Command (tự động nhận dạng câu lệnh). Nếu bạn nhập vào một lệnh PUB thì AutoCAD 2012 sẽ cho ra một loạt danh sách có lệnh bắt đầu bằng PUB. AutoCAD 2012 cũng chấp nhận ký tự đại diện, nghĩa là nếu bạn chỉ nhớ câu lệnh đó có chữ N đầu tiên và lệnh đó có 3 ký tự thì bạn chỉ cần nhập N??, ngay lập tức AutoCAD sẽ liệt kê danh sách lệnh cho bạn. Rất hữu ích đúng không các bạn .

Chức năng mới nữa trong AutoCAD 2012 là chức năng Explorer. Chức năng này cho phép bạn tìm kiếm về dữ liệu AutoCAD trong máy tính cũng như trên mạng. Nó cũng cho phép bạn truy cập dữ liệu từ AutoDesk tìm kiếm.

Các tính năng về hiệu chỉnh nóng Grips đã được giới thiệu trong AutoCAD 2011, nay được nâng cấp thêm ở AutoCAD 2012 dành cho các đối tượng như: lines, dimensions, mleaders, arcs.

Một sự thay đổi trong AutoCAD 2012 nữa đó là chế độ SNAP chỉ tự động bắt điểm lưới khi bạn kích chọn 1 điểm, do đó bạn có thể di con trỏ một cách tự do trên giao diện người sử dụng mà không bị nhảy theo bước nhảy đã cài đặt. Các phiên bản trước đó, khi bạn bật chế độ SNAP thì con trỏ cứ giật giật nhảy bước khi bạn di chuyển nó.
Bốn nhóm công cụ trong Groups đã được xếp cùng nhau trên 1 ribbon

Bạn có thể chọn và thay đổi trực tiếp UCS trên ngay giao diện người sử dụng bằng cách nhấp chọn và nó sẽ hiển thị các chức năng chỉnh sửa cho bạn

Bạn có thể điều chỉnh cấu hình khung nhìn, hướng nhìn, và phong cách trực quan ngay trong viewport.
Sáng tạo và sửa đổi đối tượng:
Lệnh ARRAY cũ đã được nâng cấp. Bây giờ, khi bạn bắt đầu câu lệnh nó nhắc nhở cho đối tượng array, hay kiểu array (Rectangular, Polar, new Path). Ngay sau khi bạn trả lời, Array được xây dựng trên màn hình trong chế độ xem trước. Bạn có thể kéo con trỏ đến kích thước của Array hoặc cung cấp đầu vào chi tiết tại các dòng lệnh. Khi bạn làm xong kết quả là một ARRAY mới thực tế. Bạn có thể điều chỉnh các thuộc tính của mảng trên màn hình hoặc hộp thoại thuộc tính. Các tùy chọn đường dẫn mới cũng tương tự như các lệnh MEASURE hoặc DIVIDE, ngoại trừ kết quả cũng là một ARRAY kết hợp.

Lệnh BLEND giúp spline tiếp tuyến được giữa hai đường cong, giống như polylines, lines, arc, và các đường spline khác.
Kích thước các menu ngữ cảnh hiện nay bao gồm một tùy chọn để loại bỏ phong cách ghi đè.

Mleader cải tiến:
Các FILLET và CHAMFER, lệnh này bao gồm một bản xem trước kết quả, cho phép bạn thay đổi khoảng cách bán kính FILLET hay CHAMFER trước khi bạn hoàn thành các lệnh. Điều này cũng hoạt động trên polylines, và bạn có thể FILLET đường splines

Raster đã được mở rộng bao gồm nhiều định dạng mới, bao gồm MrSID, ECW, và JPEG2000
Mtext sẽ nhớ sử dụng các cài đặt mới nhất thay vì luôn mặc định số 1,5 và nền màu đỏ.
Lệnh EXTEND sẽ hỗ trợ cho cả các đường Splines.
Các lệnh JOIN đã được thay đổi để bạn không cần phải chọn một đối tượng bắt đầu, chỉ cần chọn tất cả các đối tượng tham gia.
Lệnh COPY hiện nay cho phép bạn tạo ra một mảng kết hợp không tuyến tính. Không nên nhầm lẫn điều này với các lệnh thay đổi mảng ở trên. Kết quả cuối cùng ở đây chỉ đơn giản là bản sao của đối tượng gốc.

Hiện bây giờ là một tùy chọn để đóng băng một lớp ở tất cả các Viewports trừ một hiện tại. Điều này được tìm thấy bên trong lớp quản lý hoặc sử dụng lệnh VPLAYER.
Bây giờ bao gồm xây dựng một trong chuyển đổi hàng loạt bản vẽ, được sử dụng để lưu bản vẽ xuống nhiều tất cả các cách để định dạng R2000. Cơ bản giống như DWG TrueConvert và cùng công cụ DWG Trueview.
Overkill đã được tích hợp vào AutoCAD. Lệnh này được sử dụng để xóa các bản sao các đối tượng, và sửa lỗi hình học khác.
AutoCAD WS hỗ trợ được xây dựng để bạn có thể xuất bản vẽ của bạn lên web với một cú nhấp chuột.
Có ± 70 lệnh mới hoặc thay đổi, và ± 40 biến hệ thống mới hoặc thay đổi. Hai lệnh (BLIPMODE và DSVIEWER ) và sáu biến hệ thống đã được loại bỏ.
Sưu tầm lượm lặt

Hề hề hề,
Vậy là ý bác ketxu nói là của CAD2012, bác nói cad12 làm mình té xỉu vì cứ tưởng mình ngu. Theo mình nhớ thì thằng CAD12 mới chỉ có bập bõm về 3D phải đến CAD14 thì thằng cad3D nó mới oai một tí.
Hề hề hề, mình xài Cad2004 nên mọi thứ mới đều chửa cập nhật được, mong các bác thông cảm nha. Có gì ngu ngu nhờ các bác giúp đỡ chớ đừng trách kẻo tội nghiệp lắm lắm.
Hề hề 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.

#48 hdg2318

hdg2318

    biết lệnh mirror

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

Đã gửi 08 June 2011 - 09:04 PM

Liệt kê các lệnh mới và các lệnh được update trong cad2012 cho các bạn tham khảo :)
Hình đã gửi
  • 0

Có 2 cách để nhìn đời:
1 là : coi như chẳng có gì là huyền diệu
2 là : coi như mọi điều đều huyền diệu


Click here


#49 hdg2318

hdg2318

    biết lệnh mirror

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

Đã gửi 08 June 2011 - 09:39 PM

Và đây là các biến hệ thống được update và thêm mới trong cad2012
Hình đã gửi
  • 0

Có 2 cách để nhìn đời:
1 là : coi như chẳng có gì là huyền diệu
2 là : coi như mọi điều đều huyền diệu


Click here


#50 cd2k44

cd2k44

    Edu level: li5

  • Members
  • PipPipPipPipPipPipPip
  • 648 Bài viết
Điểm đánh giá: 121 (tàm tạm)

Đã gửi 10 June 2011 - 01:06 PM

Theo chương trình hành động nay mình thêm phần chọn điểm bắt đầu rải và hướng rải cho lisp rải đối tượng theo đường dẩn.
*Lệnh rải cho toàn bộ đường dẩn thì vẩn như cũ.
*Lệnh rải từ điểm:
-Tên lệnh RTD.
-Chọn đối tượng cần rải như cũ.
-Chọn đường dẩn như cũ.
-Chọn điểm bắt đầu rải (nằm trên đường dẩn).
-Chọn điểm chỉ hướng rải (nằm trên đường dẩn).
-Lúc này các phần sau giống lisp cũ chỉ có điều đối tượng rải từ điểm bắt đầu do mình chọn và rải về phía mình chọn.
*Dự kiến là sau khi chọn 2 điểm sẽ hỏi các lựa chọn:
-Theo số lượng trên toàn bộ đoạn từ điểm bắt đầu rải theo hướng chỉ và đi hết đường dẩn. (cái này đã có)
-Theo khoảng cách trên toàn bộ đoạn từ điểm bắt đầu rải theo hướng chỉ và đi hết đường dẩn. (cái này đã có)
-Từ điểm bắt đầu rải theo hướng chỉ và đi hết đường dẩn hỏi số lần rải và khoảng cách rải (nhân với nhau không nhất thiết rải đến hết).
-Theo số lượng trên đoạn từ điểm bắt đầu rải đến điểm chỉ hướng.
-Theo khoảng cách trên đoạn từ điểm bắt đầu rải đến điểm chỉ hướng.
Đang nghỉ cách nào gộp vào 1 câu hỏi cho nó ngắn nên tạm thời dùng như trên đã.



(Defun c:rdt (/ ss doituong dsl dc ddd chondd chieudaicuver diemdau diemcuoi krai chieudaidoan slc sl index d2 p2 d5 p5 d3 p3 dt l m)
(vl-load-com)
(command "undo" "be")
(command "ucs" "")
(chonnhomdoituong)
(choncuver)
(hoikieurai)
(command "ucs" "p")
(command "undo" "end")
(princ)
)
;;;;;;;;;;;;;;;;;
(Defun c:rtd (/ ss doituong dsl dc ddd chondd chieudaicuver diemdau diemcuoi krai chieudaidoan slc sl index d2 p2 d5 p5 d3 p3 dt l m)
(vl-load-com)
(command "undo" "be")
(command "ucs" "")
(chonnhomdoituong)
(choncuver)
(chondiemxuatphat)
(hoikieuraicd)
(command "ucs" "p")
(command "undo" "end")
(princ)
)
;;;;;;;;;;;;;;;;;
(Defun chondiemxuatphat ()
(setq luubatdiem (getvar "osmode"))
(setvar "osmode" 545)
(setq diemchuan (getpoint "\nDiem bat dau rai tren duong dan:"))
(setq diemdinhhuong (getpoint diemchuan"\nHuong rai so voi diem chuan:"))
(setvar "osmode" 0)
(setq daidendiem (vlax-curve-getDistAtPoint chondd diemchuan))
(setq daidenhuong (vlax-curve-getDistAtPoint chondd diemdinhhuong))
(setvar "osmode"luubatdiem)
(Cond
((< daidendiem daidenhuong) (setq chieudaitinh (- chieudaicuver daidendiem)) (setq dautinh +))
((> daidendiem daidenhuong) (setq chieudaitinh daidendiem) (setq dautinh -))
)
(setq doanxuatphat daidendiem)
(princ)
)
;;;;;;;;;;;;;;;;;
(Defun hoikieuraicd ()
(setq kraicd (strcase (getstring "\nKieu rai theo: So luong/<Khoang cach>")))
(Cond
((= kraicd "S") (raisoluongcd))
((/= kraicd "S")(raikhoangcachcd))
)
(princ)
)
;;;;;;;;;;;;;;
(Defun raikhoangcachcd ()
(setq chieudaidoan (GETDIST "\nKhoang cach doan chia: "))
(setq sol (+ (/ chieudaitinh chieudaidoan) 1))
(setq sl (fix sol))
(setq sl (fix sl))
(thuchienrai)
(princ)
)
;;;;;;;;;;;;;;
(Defun raisoluongcd ()
(setq slc (getreal "\nChia duong dan thanh may lan:"))
(setq chieudaidoan (/ chieudaitinh slc))
(setq sl (fix (+ 1 slc)))
(thuchienrai)
(princ)
)
;;;;;;;;;;;;;;
(Defun chonnhomdoituong ()
(princ "\nChon doi tuong rai:")
(setq ss (ssget))

(cond
((= ss nil) (princ "\nChua chon duoc doi tuong nao:") (chonnhomdoituong))
((/= ss nil)
(setq dsl (sslength ss))
(cond
((= dsl 1)
(setq doituong (ssname SS 0))
(setq doituong (entget doituong))
(setq KIEUDOITUONG (cdr (assoc 0 doituong)))
(cond
((= KIEUDOITUONG "INSERT") (setq dc (cdr (assoc 10 doituong))))
((/= KIEUDOITUONG "INSERT") (chondiemchuandoituong))
);ketthuccondxemblock
);kethucdsl1
((/= dsl 1) (chondiemchuandoituong))
);ketthuccondnho

);ketthucsetqdsl
);ketthuccondtong
(princ)
)
;;;;;;;;;;;;;;;;;
(Defun chondiemchuandoituong ()
(setq dc (getpoint "\nChon diem goc: "))
(cond
((= dc nil) (princ "\nChua chon duoc diem goc:") (chondiemchuandoituong))
((/= ss nil)))
(princ)
)
;;;;;;;;;;;;;;;;;
(Defun choncuver ()

(setq ddd (entsel "\nChon duong dan:"))
(while
(or
(null ddd)
(or (= "TEXT" (cdr (assoc 0 (entget (car ddd))))) (= "MTEXT" (cdr (assoc 0 (entget (car ddd))))) (= "HATCH" (cdr (assoc 0 (entget (car ddd))))) (= "INSERT" (cdr (assoc 0 (entget (car ddd))))) (= "REGION" (cdr (assoc 0 (entget (car ddd))))) (= "DIMENSION" (cdr (assoc 0 (entget (car ddd)))))
)
)
(setq ddd (entsel "\nDoi tuong khong the lam duong dan! Chon lai"))
)

(setq chondd (car ddd))
(setq luubatdiem (getvar "osmode"))
(setvar "osmode" 0)
(setq chieudaicuver (vlax-curve-getDistAtParam chondd (vlax-curve-getEndParam chondd)))
(setq doanxuatphat 0)
(setvar "osmode"luubatdiem)
(princ)
)
;;;;;;;;;;;;;;;;;
(Defun hoikieurai ()
(setq dautinh +)
(setq krai (strcase (getstring "\nKieu rai theo: So luong/<Khoang cach>")))
(Cond
((= krai "S") (raisoluong))
((/= krai "S")(raikhoangcach))
)

(princ)
)
;;;;;;;;;;;;;;
(Defun raikhoangcach ()
(setq chieudaidoan (GETDIST "\nKhoang cach doan chia: "))
(setq sol (+ (/ chieudaicuver chieudaidoan) 1))
(setq sl (fix sol))
(setq sl (fix sl))
(thuchienrai)
(princ)
)
;;;;;;;;;;;;;;
(Defun raisoluong ()
(setq slc (getreal "\nChia duong dan thanh may lan:"))
(setq chieudaidoan (/ chieudaicuver slc))
(setq sl (fix (+ 1 slc)))
(thuchienrai)
(princ)
)
;;;;;;;;;;;;;;
(Defun thuchienrai (/ quaykhong)

(setq quaykhong (strcase (getstring "\nCo quay doi tuong vuong goc voi duong dan khong: Khong/<Co>")))
(Cond
((= quaykhong "K") (setq copygiua copykoquay))
((/= quaykhong "K")(setq copygiua copyquay))
)

(setq index -1)

(repeat sl
(setq index (1+ index))
(setq d2 (dautinh doanxuatphat (* chieudaidoan index)))
(setq luubatdiem (getvar "osmode"))
(setvar "osmode" 0)
(setq p2 (vlax-curve-getPointAtDist chondd d2))
(setvar "osmode"luubatdiem)
(copygiua)
)
(princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;
(defun copycuoiquay()
(setq luubatdiem (getvar "osmode"))
(setvar "osmode" 0)
(setq d5 (- (dautinh doanxuatphat (* chieudaidoan index)) 0.01))
(setq p5 (vlax-curve-getPointAtDist chondd d5))
(setq L 0)
(setq M (sslength ss))
(while (< L M)
(setq DT (ssname ss L))
(command ".copy" DT "" dc p2)
(command ".rotate" "last" "" p2 p5)
(command ".rotate" "last" "" p2 180)
(setq L (1+ L))
)
(setvar "osmode"luubatdiem)
(princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;
(defun COPYQUAY(/ p3)
(setq luubatdiem (getvar "osmode"))
(setvar "osmode" 0)
(setq d3 (+ (dautinh doanxuatphat (* chieudaidoan index)) 0.001))
(setq p3 (vlax-curve-getPointAtDist chondd d3))
(setvar "osmode"luubatdiem)
(Cond
((= p3 nil) (copycuoiquay))
((/= p3 nil)
(setq L 0)
(setq M (sslength ss))
(setq luubatdiem (getvar "osmode"))
(setvar "osmode" 0)
(while (< L M)
(setq DT (ssname ss L))
(command ".copy" DT "" dc p2)
(command ".rotate" "last" "" p2 p3)
(setq L (1+ L))
)
(setvar "osmode"luubatdiem)
)
)


(princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;
(defun COPYKOQUAY()
(setq luubatdiem (getvar "osmode"))
(setvar "osmode" 0)
(command ".copy" ss "" dc p2 "")
(setvar "osmode"luubatdiem)
(princ)
)
;;;;;;;;;;;;;;

Nhờ bác Duy và các bác trên diễn đàn cải tiến lisp rải đối tượng của bác Duy giùm em với yêu cầu như sau:
Đối tượng nguồn là text, sau khi rải, text sẽ được chèn vào điểm là giao điểm của các đường thẳng or cung tròn, or polyline với đường dẫn.Các text rải sẽ tăng dần đều.Em gửi hình minh họa để nhờ các bác chỉnh giùm em.Thanks các anh chị trên diễn đàn
Hình đã gửi
  • 0

#51 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 10 June 2011 - 02:11 PM

Nhờ bác Duy và các bác trên diễn đàn cải tiến lisp rải đối tượng của bác Duy giùm em với yêu cầu như sau:
Đối tượng nguồn là text, sau khi rải, text sẽ được chèn vào điểm là giao điểm của các đường thẳng or cung tròn, or polyline với đường dẫn.Các text rải sẽ tăng dần đều.Em gửi hình minh họa để nhờ các bác chỉnh giùm em.Thanks các anh chị trên diễn đàn
Hình đã gửi

Vụ text tăng dần điều thì mình làm đc nhưng mình ko biết cách tìm giao điểm của các đường bạn chọn.
  • 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


#52 cd2k44

cd2k44

    Edu level: li5

  • Members
  • PipPipPipPipPipPipPip
  • 648 Bài viết
Điểm đánh giá: 121 (tàm tạm)

Đã gửi 10 June 2011 - 02:28 PM

Vụ text tăng dần điều thì mình làm đc nhưng mình ko biết cách tìm giao điểm của các đường bạn chọn.

Dạ, vậy nhờ anh chỉnh cho em cái lisp tăng đều text khi rải.còn việc rải đúng giao điểm có thời gian anh nghiên cứu giùm em với nha
  • 0

#53 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 20 June 2011 - 03:46 PM

*Đã hoàn thiện lisp rải đối tượng theo đường dẩn.
-Tên lệnh: RTD (rải từ điểm)
-Hỏi chọn đối tượng muốn rải: Bạn chọn thoải mái bằng các kiểu (đối tượng gì cũng được) kết thúc chọn bằng enter.
+Nếu bạn chọn hơn 1 đối tượng thì sẽ hỏi bạn chọn điểm chuẩn cho nhóm đối tượng này (dùng để làm điểm đặt trên đường dẩn í).
+Nếu bạn chọn 1 đối tượng thì sẽ xem nếu đối tượng không phải là block thì vẩn hỏi chọn điểm chuẩn, Nếu đối tượng là block thì bỏ qua phần hỏi chọn điểm chuẩn mà lấy điểm chèn của block đó làm điểm chuẩn.
-Hỏi chọn đường dẩn dùng để rải.
-Hỏi điểm đầu và điểm cuối đoạn rải (2 điểm này phải nằm trên đường dẩn nếu kông thì lisp sẽ hỏi lại. Sẽ thực hiện rải trong khoảng từ điểm thứ nhất đến điểm thứ 2 nếu bạn muốn rải nguyên đường thì chọn 2 điểm đầu mút)
-Hỏi “Kieu rai theo: Tinh/So luong/(khoang)” :
+Rải theo số lượng thì nhập S enter.
+Rải theo cách tính toán thì nhập T enter.
+Rải theo khoảng cách thì nhập K enter hoặc enter không (thực chất cứ nhập vào khác S và T thì nhận là khoảng cách).
-Lựa chọn rải theo số lượng thì hỏi số lượng dùng chia điều đoạn rải cho số lượng.
-Lựa chọn Khoảng cách thì hỏi khoảng cách (Khoảng cách này nhập số bằng bàn pím hoặc chọn 2 điểm bất kỳ trên màn hình và lấy ra khoảng cách theo đường chom bay giữa 2 điểm). Nếu bạn muốn lấy khảng cách giữa 2 điểm trên đường dẩn (khoảng cách tính men theo đường dẩn giửa 2 điểm) thì nhập 0 (số không) lisp sẽ hỏi điểm đầu và điểm cuối đoạn đo (2 điểm này phải nằm trên đường dẩn nếu kông thì lisp sẽ hỏi lại).
-Lựa chọn tính thì sẽ hỏi khoảng cách và số lượng rải. Nếu số lượng nhân khoảng cách nhập vào dài hơn đoạn rải thì lisp yêu cầu nhập lại. Đoạn nhập khoảng cách tương tự như trên. Bắt đầu rải từ điểm thứ nhất.
-Hỏi “Co quay doi tuong vuong goc voi duong dan khong: Khong/(Co)") :
+Không quay đối tượng cho vuông góc với đường dẩn thì nhập K enter.
+Có quay thì nhập C en ter hoặc enter không (thực chất cứ nhập vào khác K thì nhận là có).

Tải đây
  • 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


#54 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 21 June 2011 - 09:19 AM

Dạ, vậy nhờ anh chỉnh cho em cái lisp tăng đều text khi rải.còn việc rải đúng giao điểm có thời gian anh nghiên cứu giùm em với nha

Bạn nêu lại yêu cầu cho mình tí. Trình tự và ết quả mong muốn nhé.
  • 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


#55 cd2k44

cd2k44

    Edu level: li5

  • Members
  • PipPipPipPipPipPipPip
  • 648 Bài viết
Điểm đánh giá: 121 (tàm tạm)

Đã gửi 21 June 2011 - 10:16 AM

Bạn nêu lại yêu cầu cho mình tí. Trình tự và ết quả mong muốn nhé.

Em gửi anh hình minh họa
Hình đã gửi
Yêu cầu của em như sau:
1. Đối tượng nguồn được chọn là text
2. Đường dẫn là polyline
3. Rải theo khoảng cách.Khoảng các này được xác định từ giao điểm của các polyline,line or arc... giao với đường dẫn, rải từ điểm đầu và điểm cuối của đường dẫn.Trong quá trình rải, số thự tự của text tăng dần.
4. Các nội dung còn lại như xoay text hay gì đó thì lisp của anh đã thực hiện rất tốt rồi
Trên đây là yêu cầu của em, nhờ anh và các bác trên diễn đàn giúp em ah.Em cảm ơn các anh nhiều
  • 0

#56 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 21 June 2011 - 01:54 PM

Em gửi anh hình minh họa
Hình đã gửi
Yêu cầu của em như sau:
1. Đối tượng nguồn được chọn là text
2. Đường dẫn là polyline
3. Rải theo khoảng cách.Khoảng các này được xác định từ giao điểm của các polyline,line or arc... giao với đường dẫn, rải từ điểm đầu và điểm cuối của đường dẫn.Trong quá trình rải, số thự tự của text tăng dần.
4. Các nội dung còn lại như xoay text hay gì đó thì lisp của anh đã thực hiện rất tốt rồi
Trên đây là yêu cầu của em, nhờ anh và các bác trên diễn đàn giúp em ah.Em cảm ơn các anh nhiều

Hề hề hề,
Bạn hãy lưu ý các trường hợp sau:
1/- Giữa polyline của bạn với các polyline khác có thể có nhiều hơn một điểm cắt đó.
2/- Trật tự ghi text được sắp xếp thế nào theo tọa độ giao điểm hay theo thứ tự các polyline nhánh????
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#57 cd2k44

cd2k44

    Edu level: li5

  • Members
  • PipPipPipPipPipPipPip
  • 648 Bài viết
Điểm đánh giá: 121 (tàm tạm)

Đã gửi 21 June 2011 - 02:16 PM

Hề hề hề,
Bạn hãy lưu ý các trường hợp sau:
1/- Giữa polyline của bạn với các polyline khác có thể có nhiều hơn một điểm cắt đó.
2/- Trật tự ghi text được sắp xếp thế nào theo tọa độ giao điểm hay theo thứ tự các polyline nhánh????

Cảm ơn bác Bình đã quan tâm đến vấn đề của em.Em trả lời các lưu ý của bác như sau:
1. Ý kiến nhiều hơn 1 điểm giao cắt là sao vậy bác, em chưa hiểu.Nhưng yêu cầu của em thì các đối tượng này do em bố trí nên chỉ giao cắt với đường dẫn tại 1 điểm thôi bác ah
2. Text rải theo thứ tự tăng dần từ đầu đến cuối đường dẫn ( hướng tuyến mình đã chọn từ lựa chọn có trong lisp của bác Duy)
  • 0

#58 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 21 June 2011 - 02:48 PM

Cảm ơn bác Bình đã quan tâm đến vấn đề của em.Em trả lời các lưu ý của bác như sau:
1. Ý kiến nhiều hơn 1 điểm giao cắt là sao vậy bác, em chưa hiểu.Nhưng yêu cầu của em thì các đối tượng này do em bố trí nên chỉ giao cắt với đường dẫn tại 1 điểm thôi bác ah
2. Text rải theo thứ tự tăng dần từ đầu đến cuối đường dẫn ( hướng tuyến mình đã chọn từ lựa chọn có trong lisp của bác Duy)

Như đã nói mình bí vấn đề tìm giao điểm nên mình thính giải bài toán của bạn như sau:
-Hỏi chọn text mẫu, hỏi chọn điểm chuẩn, Hỏi có cần quay kết quả theo đường dẩn không:
+Nếu không thì chọn các điểm đến text sẽ được copy đến và tăng giá trị (giá trị này mặc định là +1 có cho phép nhập lại và nhận cả giá trị âm).
+Nếu có thì hỏi chọn đường dẩn, và các điểm đến (các điểm này phải nằm trên đường dẩn). Kết quả tương tự như trên nhưng có quay kết quả theo đường dẩn.
*Vậy lệnh này thao tác này giống copy text thay đổi giá trị. Bạn thấy ổn thì mình viết.
  • 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


#59 cd2k44

cd2k44

    Edu level: li5

  • Members
  • PipPipPipPipPipPipPip
  • 648 Bài viết
Điểm đánh giá: 121 (tàm tạm)

Đã gửi 21 June 2011 - 03:24 PM

Như đã nói mình bí vấn đề tìm giao điểm nên mình thính giải bài toán của bạn như sau:
-Hỏi chọn text mẫu, hỏi chọn điểm chuẩn, Hỏi có cần quay kết quả theo đường dẩn không:
+Nếu không thì chọn các điểm đến text sẽ được copy đến và tăng giá trị (giá trị này mặc định là +1 có cho phép nhập lại và nhận cả giá trị âm).
+Nếu có thì hỏi chọn đường dẩn, và các điểm đến (các điểm này phải nằm trên đường dẩn). Kết quả tương tự như trên nhưng có quay kết quả theo đường dẩn.
*Vậy lệnh này thao tác này giống copy text thay đổi giá trị. Bạn thấy ổn thì mình viết.

Dạ đúng rồi đó anh.Anh viết giùm em một lisp theo như bài toán mà anh đã giải thích giùm em ah
  • 0

#60 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 21 June 2011 - 03:28 PM

Nhờ bác Duy và các bác trên diễn đàn cải tiến lisp rải đối tượng của bác Duy giùm em với yêu cầu như sau:
Đối tượng nguồn là text, sau khi rải, text sẽ được chèn vào điểm là giao điểm của các đường thẳng or cung tròn, or polyline với đường dẫn.Các text rải sẽ tăng dần đều.Em gửi hình minh họa để nhờ các bác chỉnh giùm em.Thanks các anh chị trên diễn đàn
Hình đã gửi

Vì bạn không đưa file CAD, nên còn có nhiều điều chưa rõ về Format Text của bạn.
vd : Text có định dạng số và chữ lẫn lộn "No : 3" hay "Km +4.530" ...

Truớc mắt bạn dùng thử LISP ghi Text tại giao điểm của các đường thẳng, cung tròn, Pline, đuờng tròn, elíp với đường dẫn.
+ text rải sẽ tăng dần đều với buớc là 1.
+ tuơng tự lệnh Divide của CAD, phụ thuộc vào điểm pick khi chọn đường dẫn, chiều tăng của Text sẽ đi từ điểm đầu tới điểm cuối hoặc nguợc lại.
(defun c:ATIC(/ ent ov pts ss vl h num); ATIC -> Add Text at Intersect with Curve
;; By : Gia_Bach, www.CadViet.com 2011 ;;
(vl-load-com)
(command "undo" "be")
(setq vl '("osmode" "orthomode" "cmdecho") ; Sys Var list
ov (mapcar 'getvar vl)) ; Get Old values
(mapcar 'setvar vl '(545 0 0))
(if (and (setq eEnt (entsel "\nChon Curve :"))
(setq ent (car eEnt) pick (trans (cadr eEnt) 1 0))
(wcmatch (cdr (assoc 0 (entget ent))) "*LINE,ARC")
(princ "\nChon doi tuong lay giao diem :")
(setq ss (ssget (list (cons 0 "*LINE,ARC,CIRCLE,ELLIPSE"))))
(setq pts (ent_ss_interpts (setq ent (vlax-ename->vla-object ent) ) ss))
(>(vl-list-length pts)0) )
(progn
(or *h* (setq *h* (* (getvar "dimtxt")(getvar "dimscale"))))
(initget 6)
(setq h (getdist (strcat "\nChieu cao chu <" (rtos *h*) "> :")))
(if h (setq *h* h))
(or *num* (setq *num* 1))
(setq num (getint (strcat "\nGia tri bat dau <" (rtos *num*) "> :")))
(if num (setq *num* num) )
(or spc (setq spc (vla-get-modelspace (vla-get-ActiveDocument (vlax-get-Acad-Object)))))
(foreach pt (if (> (vlax-curve-getDistAtPoint ent (vlax-curve-getClosestPointTo ent pick))
(/ (vlax-curve-getDistAtParam ent (vlax-curve-getEndParam ent))2))
(reverse pts) pts)
(vla-AddText spc (rtos *num*) (vlax-3D-point pt) *h*)
(setq *num* (1+ *num*)))
(mapcar 'setvar vl ov)
(command "undo" "e") )
(alert "Khong tim duoc giao diem!"))
(princ))

(defun ent_ss_interpts (ent ss / e i intpts lst_pt)
;; By : Gia_Bach, www.CadViet.com 2011 ;;
(defun list->3pair (old / new)
(while (setq new (cons (list (car old) (cadr old) (caddr old)) new)
old (cdddr old)))
(reverse new) )
(setq i -1)
(while (setq e (ssname ss (setq i (1+ i))))
(if (and
(not (equal ent (setq eObj (vlax-Ename->Vla-Object e))))
(setq intpts (vlax-invoke ent 'IntersectWith eObj 0)) )
(foreach pt (list->3pair intpts)
(if (not (vl-position pt lst_pt))
(setq lst_pt (cons pt lst_pt)) ))) )
(vl-sort lst_pt
'(lambda (x y)
(< (vlax-curve-getParamAtPoint ent (vlax-curve-getClosestPointTo ent x))
(vlax-curve-getParamAtPoint ent (vlax-curve-getClosestPointTo ent y))))) )

  • 2