Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
gasmanc

[Yêu cầu] viết lisp về TEXT .....?

Các bài được khuyến nghị

gasmanc    1

Nhờ các cao thủ giúp đỡ!

 

Mình có file cad như sau: http://www.cadviet.com/upfiles/3/vi_du_01.dwg

Trong đó mình có tập hợp các điểm cao trình được mô tả bằng các nhóm text. Các nhóm text có cấu tạo bởi 3 đối tượng, text A, dấu chấm point, text B. (Chú ý rằng điểm cao trình có tọa độ trùng với tọa độ của dấu chấm point)

Chân text, dấu chấm point và đầu text B nằm trên cùng 1 đường thẳng (cùng giá trị Y); và cách nhau lần lượt các khoảng bằng 0.4; cao độ text = 2.

 

Mong các cao thủ viết giúp mình lisp có thể thực hiện các yêu cầu sau:

1. Chọn tất cả các nhóm text ở trên, sử dụng lisp biến 2 đối tượng rời rạc A1,B1; A2, B2; ...An, Bn thành các số thập phân A1.B1; A2.B2;...An.Bn với dấu chấm trong text trùng với dấu chấm point ban đầu.

2. Từ các text được nối lại ở trên, cộng hoặc trừ giá trị các text này cho cùng 1 hằng số. (bước này có thể ko cần thiết, vì ta có thể đi đường vòng hơn bằng cách xuất text ra cell xử lý rồi xuất ngược vào cad, nhưng nếu lisp làm được thì quá tuyệt)

3. Từ tập hợp các text đã được xử lý ở bước 2 hoặc tập hợp text mới, tách thành các tập hợp text giống như ban đầu (Nghĩa là mỗi text A'.B' tách thành 3 đối tượng A',và B' có vị trí không dổi giống nhóm A,B ban đầu . xem thêm trong bản vẽ.

 

Mình biết trong diễn đàn đã có lisp nối text của giabach nhưng lisp này chỉ cho phép làm lần lượt với từng nhóm mà ko cho phép làm với tất cả. Như vậy sẽ rất mất thời gian khi số lượng nhóm text cần nối lại lên đến hàng nghìn nhóm. mặt khác, vị trí text không được như mong muốn của mình. vậy mong các bạn cải tiến giùm.

 

Xin chân thành cảm ơn!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamthanhbinh    3.123

Nhờ các cao thủ giúp đỡ!

 

Mình có file cad như sau: http://www.cadviet.com/upfiles/3/vi_du_01.dwg

Trong đó mình có tập hợp các điểm cao trình được mô tả bằng các nhóm text. Các nhóm text có cấu tạo bởi 3 đối tượng, text A, dấu chấm point, text B. (Chú ý rằng điểm cao trình có tọa độ trùng với tọa độ của dấu chấm point)

Chân text, dấu chấm point và đầu text B nằm trên cùng 1 đường thẳng (cùng giá trị Y); và cách nhau lần lượt các khoảng bằng 0.4; cao độ text = 2.

 

Mong các cao thủ viết giúp mình lisp có thể thực hiện các yêu cầu sau:

1. Chọn tất cả các nhóm text ở trên, sử dụng lisp biến 2 đối tượng rời rạc A1,B1; A2, B2; ...An, Bn thành các số thập phân A1.B1; A2.B2;...An.Bn với dấu chấm trong text trùng với dấu chấm point ban đầu.

2. Từ các text được nối lại ở trên, cộng hoặc trừ giá trị các text này cho cùng 1 hằng số. (bước này có thể ko cần thiết, vì ta có thể đi đường vòng hơn bằng cách xuất text ra cell xử lý rồi xuất ngược vào cad, nhưng nếu lisp làm được thì quá tuyệt)

3. Từ tập hợp các text đã được xử lý ở bước 2 hoặc tập hợp text mới, tách thành các tập hợp text giống như ban đầu (Nghĩa là mỗi text A'.B' tách thành 3 đối tượng A',và B' có vị trí không dổi giống nhóm A,B ban đầu . xem thêm trong bản vẽ.

 

Mình biết trong diễn đàn đã có lisp nối text của giabach nhưng lisp này chỉ cho phép làm lần lượt với từng nhóm mà ko cho phép làm với tất cả. Như vậy sẽ rất mất thời gian khi số lượng nhóm text cần nối lại lên đến hàng nghìn nhóm. mặt khác, vị trí text không được như mong muốn của mình. vậy mong các bạn cải tiến giùm.

 

Xin chân thành cảm ơn!

Hề hề hề,

Cao thủ hay thấp thủ thì chửa biết, nhưng mong bạn hãy nói rõ cái kết quả cuối cùng bạn cần là cái chi chi. Chứ nói lòng vòng như bạn thì thật là khó.

Bạn cần cái kết quả cuối cùng là: các text sau khi cộng trừ loằng ngoằng chi đó sẽ được tách trở thành 3 đối tượng như cũ

Nếu vậy thì cái việc phải viết lại text thành một hàng để làm cái chi ????

Tại sao lại cứ nhất thiết cái khoảng cách giữa point và các text là 0.4??? Thực tế trên bản vẽ bạn gửi lại không phải như vậy là vì sao???

 

Tốt nhất là bạn chỉ nên trình bày cái bạn có và kết quả bạn cần thôi, còn cách làm ra sao để có cái kết quả ấy là do các lisper sẽ quyết định. Như vậy sẽ thuận lợi cho người viết lisp hơn là cứ nhất thiết phải làm theo cái cách nghĩ của bạn....

Hề hề hề,...

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
duy782006    1.374

Nhờ các cao thủ giúp đỡ!

 

Mình có file cad như sau: http://www.cadviet.com/upfiles/3/vi_du_01.dwg

Trong đó mình có tập hợp các điểm cao trình được mô tả bằng các nhóm text. Các nhóm text có cấu tạo bởi 3 đối tượng, text A, dấu chấm point, text B. (Chú ý rằng điểm cao trình có tọa độ trùng với tọa độ của dấu chấm point)

Chân text, dấu chấm point và đầu text B nằm trên cùng 1 đường thẳng (cùng giá trị Y); và cách nhau lần lượt các khoảng bằng 0.4; cao độ text = 2.

 

Mong các cao thủ viết giúp mình lisp có thể thực hiện các yêu cầu sau:

1. Chọn tất cả các nhóm text ở trên, sử dụng lisp biến 2 đối tượng rời rạc A1,B1; A2, B2; ...An, Bn thành các số thập phân A1.B1; A2.B2;...An.Bn với dấu chấm trong text trùng với dấu chấm point ban đầu.

2. Từ các text được nối lại ở trên, cộng hoặc trừ giá trị các text này cho cùng 1 hằng số. (bước này có thể ko cần thiết, vì ta có thể đi đường vòng hơn bằng cách xuất text ra cell xử lý rồi xuất ngược vào cad, nhưng nếu lisp làm được thì quá tuyệt)

3. Từ tập hợp các text đã được xử lý ở bước 2 hoặc tập hợp text mới, tách thành các tập hợp text giống như ban đầu (Nghĩa là mỗi text A'.B' tách thành 3 đối tượng A',và B' có vị trí không dổi giống nhóm A,B ban đầu . xem thêm trong bản vẽ.

 

Mình biết trong diễn đàn đã có lisp nối text của giabach nhưng lisp này chỉ cho phép làm lần lượt với từng nhóm mà ko cho phép làm với tất cả. Như vậy sẽ rất mất thời gian khi số lượng nhóm text cần nối lại lên đến hàng nghìn nhóm. mặt khác, vị trí text không được như mong muốn của mình. vậy mong các bạn cải tiến giùm.

 

Xin chân thành cảm ơn!

Mình có sẳn cái này dùng nối.

(Defun c:HTR ()
 (if (null kichthuocchontex)(setq kichthuocchontex "1"))
 (setq kichthuocchontext (atof kichthuocchontex)) 
(setvar "MODEMACRO" "CHINH CAO DO HIEN TRANG")
(command "-layer" "new" "SOCAODOSUACHUA" "color" "50" "SOCAODOSUACHUA" "")
(princ "\nPHAM QUOC DUY Binh Son - Quang ngai")
(Princ "\nHay chon vung :")
(setq XX (ssget '((0 . "POINT,CIRCLE"))))
(setq L 0)
(setq M (sslength XX))
(while (< L M)
  (setq DT (ssname XX L))
  (setq DT (entget DT))
  (setq TEXT (cdr (assoc 10 DT)))
(setq luubatdiem (getvar "osmode"))
 (setvar "osmode" 0)
 (setq x (car TEXT))
 (setq y (cadr TEXT))
(setvar "osmode"luubatdiem)
(setq luubatdiem (getvar "osmode"))
 (command "-layer" "set" "SOCAODOSUACHUA" "")
 (setvar "osmode" 0)
(command "select" "W" (list (+ x 0)(- y 0)) (list (- x (* kichthuocchontext 10))(+ y (* kichthuocchontext 3))) "" "")
(setq SS (ssget "p" '((0 . "TEXT"))))

  (setq DTDTT (ssname SS 0))
  (setq DTTT (entget DTDTT))
 (setq NOIDUNGVIET (cdr (assoc 1 DTTT)))

(command "select" "W" (list (+ x (* kichthuocchontext 10))(- y 0)) (list (+ x 0)(+ y (* kichthuocchontext 3))) "" "")
(setq yy (ssget "p" '((0 . "TEXT"))))

  (setq DTDTTS (ssname yy 0))
  (setq DTTTS (entget DTDTTS))
 (setq NOIDUNGVIETS (cdr (assoc 1 DTTTS)))

  (setq chuoivietlai (strcat NOIDUNGVIET "." NOIDUNGVIETS))
 (command "TEXT" "c" (list (+ x 0)(- y 0)) (* kichthuocchontext 1) 0 chuoivietlai)
 (setq NOIDUNGVIET nil)
 (setq NOIDUNGVIETS nil)
 (setq chuoivietlai nil)
(setvar "osmode"luubatdiem)
  (setq L (1+ L))
)
(setvar "MODEMACRO" "**CHUC BAN LAM VIEC HIEU QUA** PHAM QUOC DUY - BINH SON - QUANG NGAI")
     (Princ)
) 

-Kết quả sẽ viết lên layer SOCAODOSUACHUA. Phải kiểm tra chứ có khi text dính thì nó ra kết quả sai nhé. Đây là lisp mình làm sẳn để nối text do lúc xưa các ông tướng địa hình hay ma số dẩn đến kết quả z của các point không trúng.

-Trường hợp của bạn thì mình đoán là ma thêm khối lượng địa hình. nếu tin tưởng z của point thì viết líp như này hay hơn.

+nâng hoặc hạ z của point giá trị do mình nhập.

+Đọc z của point viết ra text trước và sau.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Hoan1111    694

Người viết xong không có người nhận. Thật mất công cho bác Duy quá.

 

Chắc chủ thớt bỏ nghề, đi bán ...thịt rồi, thật buồn khi người ta không sống được với nghề được đào tạo,  bác ạ!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Hantinhsaycad    378

Nếu bạn gửi tin nhắn với nhiều lỗi chính tả, và ngữ pháp lủng củng, thì ngay cả hình ảnh bạn đẹp trai mấy cũng khó nhận được trả lời

Nguồn :http://tinhhinh.vn/vi-sao-nang-khong-them-tra-loi-ban-d13773/

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay


×