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.
Nguyen Hoanh

Viết lisp theo yêu cầu [phần 2]

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

phamngoctukts    708
Với cách xác định đa giác kín là hình chữ nhật thì trong 1 số trường hợp là không ổn vì điểm pick p rất có thể không nằm giữa miền tạo bởi hình chữ nhật và hình cần xác định đường bao

Chào bác Tue_VN

Em không hiểu chỗ này của bác. Theo em nghĩ thì không có trường hợp nào có điểm p như Bác nói. Bác có thể cho 1 ví dụ cụ thể được không.

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
lacvanhoa    0

Mình có upload file đầy đủ hơn nhờ các bác xem xét chỉ giúp mình hướng giải quyết

http://www.cadviet.com/upfiles/3/mtext_2.dwg

mình muốn explode mtext cho không thay đổi nội dung chữ viết trong đó rồi tách nó ra làm ba lớp khác nhau như file em đã gửi đó

vì em làm bản đồ quy hoạch với khối lượng rất lớn mà làm thủ công thì chắc là chết.

mong các bác giúp dùm em nhe

thank các bác trước nhe!!!

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
Chào bạn nguoithomo cùng bạn phamngoctu

Đọc qua code của bạn Tue_NVthấy ý tưởng của bạn giống ý của Tue_NV đấy

Tức là ý như thế này :

1. Giả sử có 1 hình A cần vẽ đường bao

2. Ta vẽ thêm 1 đa giác kín sao cho đa giác kín này nằm ngoài hình A cần vẽ này.

3. Sử dụng lệnh Bo để tạo 1 đa giác kín với điểm pick nằm giữa miền tạo bởi đa giác kín với hình A

=> Như vậy đường bao ngoài hình A sẽ được xác định qua lệnh Boundary này

4. Xoá cái đa giác kín đi.

 

Cái đa giác kín mà bạn Tú xác định là hình chữ nhật nằm ngoài cái hình cần xác định đường bao

Với cách xác định đa giác kín là hình chữ nhật thì trong 1 số trường hợp là không ổn vì điểm pick p rất có thể không nằm giữa miền tạo bởi hình chữ nhật và hình cần xác định đường bao mà có thể nằm giữa "miền" khác

Để User tự vẽ và xác định mới chính xác nhất

- Việc này sử dụng CAD, không cần sử dụng đến Lisp là chắc ăn nhất

 

Xin lỗi vì mình đã sử dụng từ hơi khó hiểu nhưng nếu bạn đọc kĩ sẽ thấy được ý của mình

Cảm ơn anh Tue_nv

Cảm ơn anh phamngoctukts

Em kon biết nên cảm tạ các bác thế nào mới phải đây ạ

Lại một lần nữa máy tính ko cài cad, i'm sorry!

Nhiều khi mình vẽ 3D suất sang cad 2d nhiều hình rắc rối nếu ko cần thể hiện rõ thì dùng lisp này cho đơn giản hình vẽ.

Mình về quê vài hôm chắc rất nhớ diễn đàn

Chúc cả nhà ngày nghỉ cuối tuần vui vẻ

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
atl    1
Chào bạn atl,

Bạn có thể nói rõ cách bạn dựng các mặt cắt dựa theo bình đồ được không. Hiện mình cũng đang bí chỗ này do chưa biết bạn nội suy các điểm trên mặt cắt như thế nào. Biết cách dựng mắt cắt của bạn thì việc vẽ cái đường chân công trình sẽ không khó lắm nữa bạn ạ. Mình có thể tự nội suy theo cái kiểu của mình nhưng sợ không phù hợp với cái bạn cần. Mặt khác các đường đồng mức của bạn trên bình đồ cũng không thể hiện rõ cao độ của nó nên hơi khó hình dung bạn ạ. Không nhẽ lại phải tự tính ra cái cao độ của các đường đồng mức này dựa trên các điểm đo đã có trên bình đồ hay sao hả bạn.???

Rất mong bạn trả lời.

chào anh bình:em hiểu tại sao anh không thấy được cao độ trên các đường đồng mức rồi,bình đồ này được vẽ từ phần mềm SDR.chắc anh cũng biết phần mêm này,nó không phải là bình đồ 3d dạng như nova hay một phần mêm nào khác,nên ngay cả điểm mia cũng không có,khi khảo sát giao cho mình cái bình đồ này thi mình có một lisp nó có thể trắc dọc địa hình trên bđ này,có thể những điểm mà lisp vẽ cái mặt cắt đấy cũng chỉ tương đối thôi,cái đường chân đập đấy có thể đúng với cái mặt cắt ngang tương đối đấy,miển sao cắt ngang địa hình đúng với cái bình đồ đấy,nên khi mình chống cái đập lên hay đào xuống cứ mái đập giao với cái địa hình cắt ngang tại vị trí đấy để xác định đường chân đập thôi,cái khó là mình muốn vẽ đường chân đập đấy lên cài bình đồ dạng như thế này,mà nó lại không phải là 3d,khó ở chổ là nếu xoá hết các điểm mia đi chỉ để đường đồng mức thôi thi chịu không biết cao độ luôn,em không nghỉ ra cách nào,nếu mà vẽ từng mặt cắt ngang rồi chồng cái đập vào mặt cắt đấy để tìm điểm giao thì chết,lâu lắm,theo anh thì anh sẽ làm như thế nào,

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
Tue_NV    3.841
Chào bác Tue_VN

Em không hiểu chỗ này của bác. Theo em nghĩ thì không có trường hợp nào có điểm p như Bác nói. Bác có thể cho 1 ví dụ cụ thể được không.

Ví dụ đây bạn : Tạo đường bao cho hình tứ giác "A" trong file dưới

http://www.cadviet.com/upfiles/3/drawing1_33.dwg

Chào bạn nguoithomo cùng bạn phamngoctu

Đọc qua code của bạn Tue_NVthấy ý tưởng của bạn giống ý của Tue_NV đấy

Tức là ý như thế này :

1. Giả sử có 1 hình A cần vẽ đường bao

2. Ta vẽ thêm 1 đa giác kín sao cho đa giác kín này nằm ngoài hình A cần vẽ này.

3. Sử dụng lệnh Bo để tạo 1 đa giác kín với điểm pick nằm giữa miền tạo bởi đa giác kín với hình A

=> Như vậy đường bao ngoài hình A sẽ được xác định qua lệnh Boundary này

4. Xoá cái đa giác kín đi.

 

Cái đa giác kín mà bạn Tú xác định là hình chữ nhật nằm ngoài cái hình cần xác định đường bao

Với cách xác định đa giác kín là hình chữ nhật thì trong 1 số trường hợp là không ổn vì điểm pick p rất có thể không nằm giữa miền tạo bởi hình chữ nhật và hình cần xác định đường bao mà có thể nằm giữa "miền" khác

Đa giác kín cần vẽ là đa giác bao ngoài đường bao cần vẽ và điểm pick p không được tạo thành 1 "miền" khác đường bao. Vì rằng trong bản vẽ có lúc sẽ có nhiều đối tượng

 

Nên sử dụng lệnh CAD mà làm chuyện này. Giả sử vẽ như hình chữ nhật của bạn Tú thì làm CAD cũng nhanh chóng. Hoặc là vẽ đa giác kín không phải là hình chữ nhật thì việc xác định với Lisp là khó khăn hơn

  • 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
phamthanhbinh    3.123
chào anh bình:em hiểu tại sao anh không thấy được cao độ trên các đường đồng mức rồi,bình đồ này được vẽ từ phần mềm SDR.chắc anh cũng biết phần mêm này,nó không phải là bình đồ 3d dạng như nova hay một phần mêm nào khác,nên ngay cả điểm mia cũng không có,khi khảo sát giao cho mình cái bình đồ này thi mình có một lisp nó có thể trắc dọc địa hình trên bđ này,có thể những điểm mà lisp vẽ cái mặt cắt đấy cũng chỉ tương đối thôi,cái đường chân đập đấy có thể đúng với cái mặt cắt ngang tương đối đấy,miển sao cắt ngang địa hình đúng với cái bình đồ đấy,nên khi mình chống cái đập lên hay đào xuống cứ mái đập giao với cái địa hình cắt ngang tại vị trí đấy để xác định đường chân đập thôi,cái khó là mình muốn vẽ đường chân đập đấy lên cài bình đồ dạng như thế này,mà nó lại không phải là 3d,khó ở chổ là nếu xoá hết các điểm mia đi chỉ để đường đồng mức thôi thi chịu không biết cao độ luôn,em không nghỉ ra cách nào,nếu mà vẽ từng mặt cắt ngang rồi chồng cái đập vào mặt cắt đấy để tìm điểm giao thì chết,lâu lắm,theo anh thì anh sẽ làm như thế nào,

Hề hề hề,

Ý định của mình đúng như bạn đã nói nghĩa là sẽ phải dựng n cái mặt cắt dọc theo thân công trình và xác định 2n điểm giao cắt giữa các mặt cắt này với thân công trình. Từ đó nối chúng lại trên bình đồ sẽ có đường chân công trình mà thôi.

Việc dựng các mặt cắt này nếu bạn đã có lisp thì quá tốt vì chỉ cần áp dụng lisp đó vào, và đỡ mất công làm lisp cho cái công đoạn này. Nếu bạn chưa có lisp thì cũng có thể làm lisp khác được song cần phải biết cái nguyên tắc khi nội suy các điểm để dựng mặt cắt. Mình có thể tự bịa ra một cái nguyên tắc nội suy dựa trên các giao điểm của hình chiếu mặt cắt này với các đường đồng mức có trên bình đồ. (ví dụ như nội suy bậc nhất đối với các điểm nằm giữa hai đường đồng mức liền nhau chẳng hạn) Tuy nhiên cái nguyên tắc tự bịa này có phù hợp với yêu cầu của bạn hay không lại là một vấn đề khác.

Tất nhiên đã là nội suy thì không thể nói chuyện là nó chính xác 100% được, nguyên tắc nội suy nào cũng vậy mà thôi. Tuy nhiên cái nguyên tắc ấy phải được các nhà chuyên môn công nhận, mà mình thì lại chả có tí chuyên môn nào về cái món trắc địa bản đồ này nên mới phải hỏi lại bạn cho chắc ăn để làm lisp mà thôi.

Lisp nào thì cũng do con người làm ra dựa trên những nguyên tắc nhất định. Nếu xác định được các nguyên tắc này thì lisp mới cho kết quả như ý. Nếu nguyên tắc không thống nhất thì lisp nó cũng chịu chết chả thể giúp mình được. Lisp chỉ là công cụ chứ không thể thay thế con người đâu bạn à. Việc dùng lisp chẳng qua có thể ví một anh đi tàu vũ trụ với một anh đi bằng hai chân khi cùng đi một đoạn đường dài như nhau ấy mà. Đi kiểu chi cũng sẽ đến, chỉ cần xác định được đúng cái đường cần đi thôi. còn nếu như chả xác định được đường đi thì dù có ngồi tàu vũ trụ cũng chả thể đến đích đâu bạn hỉ????

Dù có lâu nhưng nếu có quyết tâm đi thì kể cả đi bộ vẫn tới đích ngon lành.

Cái việc dựng đường chân công trình của bạn cũng na ná vậy, chỉ cần xác định được cách làm thì sẽ thực hiện được cho dù có lisp hay không. Cái mình cần là bạn chỉ cho mình cái con đường phải đi ( tức là cái cách bạn vẫn làm) thì mình sẽ có thể giúp bạn một con tàu ( tức cái lisp) có thể đưa bạn đến đích nhanh hơn theo đúng cái con đường đó. Nếu không con tàu của mình sẽ đưa bạn đi tây Thiên lấy kinh theo Tôn Ngộ không mất.

Hề hề hề....

Chúc bạn vui.

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
Mình có upload file đầy đủ hơn nhờ các bác xem xét chỉ giúp mình hướng giải quyết

http://www.cadviet.com/upfiles/3/mtext_2.dwg

mình muốn explode mtext cho không thay đổi nội dung chữ viết trong đó rồi tách nó ra làm ba lớp khác nhau như file em đã gửi đó

vì em làm bản đồ quy hoạch với khối lượng rất lớn mà làm thủ công thì chắc là chết.

mong các bác giúp dùm em nhe

thank các bác trước nhe!!!

Hề hề hề,

Bạn cần cái chi nhể, cái kết quả cuối cùng hay là phải đúng cách làm của bạn????

Tỷ như mình chả cần explode nó làm quái gì cả mà vẫn cho bạn được cái kết quả tức là tách 1 text ban đầu thành 3 cái text nằm trên ba lớp khác nhau.

Và 3 cái lớp ấy bạn muốn đặt tên nó là chi, Tí,Tèo hay là Tũn, Tĩn ......????

Màu sắc có nhất thiết phải đúng như bạn đả thể hiện hay không hay màu nào cũng OK.????

Theo mình nghĩ bạn chỉ nên post cái ban đầu và cái kết quả bạn cần, còn khúc giữa làm ra sao thì tùy theo người giúp bạn sẽ hay hơn, còn việc bạn yêu cầu phải đúng cái cách như bạn đề xuất e sẽ hơi khó do mỗi người sẽ có cách tư duy giải quyết vấn đề khác nhau 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
atl    1
Hề hề hề,

Ý định của mình đúng như bạn đã nói nghĩa là sẽ phải dựng n cái mặt cắt dọc theo thân công trình và xác định 2n điểm giao cắt giữa các mặt cắt này với thân công trình. Từ đó nối chúng lại trên bình đồ sẽ có đường chân công trình mà thôi.

Việc dựng các mặt cắt này nếu bạn đã có lisp thì quá tốt vì chỉ cần áp dụng lisp đó vào, và đỡ mất công làm lisp cho cái công đoạn này. Nếu bạn chưa có lisp thì cũng có thể làm lisp khác được song cần phải biết cái nguyên tắc khi nội suy các điểm để dựng mặt cắt. Mình có thể tự bịa ra một cái nguyên tắc nội suy dựa trên các giao điểm của hình chiếu mặt cắt này với các đường đồng mức có trên bình đồ. (ví dụ như nội suy bậc nhất đối với các điểm nằm giữa hai đường đồng mức liền nhau chẳng hạn) Tuy nhiên cái nguyên tắc tự bịa này có phù hợp với yêu cầu của bạn hay không lại là một vấn đề khác.

Tất nhiên đã là nội suy thì không thể nói chuyện là nó chính xác 100% được, nguyên tắc nội suy nào cũng vậy mà thôi. Tuy nhiên cái nguyên tắc ấy phải được các nhà chuyên môn công nhận, mà mình thì lại chả có tí chuyên môn nào về cái món trắc địa bản đồ này nên mới phải hỏi lại bạn cho chắc ăn để làm lisp mà thôi.

Lisp nào thì cũng do con người làm ra dựa trên những nguyên tắc nhất định. Nếu xác định được các nguyên tắc này thì lisp mới cho kết quả như ý. Nếu nguyên tắc không thống nhất thì lisp nó cũng chịu chết chả thể giúp mình được. Lisp chỉ là công cụ chứ không thể thay thế con người đâu bạn à. Việc dùng lisp chẳng qua có thể ví một anh đi tàu vũ trụ với một anh đi bằng hai chân khi cùng đi một đoạn đường dài như nhau ấy mà. Đi kiểu chi cũng sẽ đến, chỉ cần xác định được đúng cái đường cần đi thôi. còn nếu như chả xác định được đường đi thì dù có ngồi tàu vũ trụ cũng chả thể đến đích đâu bạn hỉ????

Dù có lâu nhưng nếu có quyết tâm đi thì kể cả đi bộ vẫn tới đích ngon lành.

Cái việc dựng đường chân công trình của bạn cũng na ná vậy, chỉ cần xác định được cách làm thì sẽ thực hiện được cho dù có lisp hay không. Cái mình cần là bạn chỉ cho mình cái con đường phải đi ( tức là cái cách bạn vẫn làm) thì mình sẽ có thể giúp bạn một con tàu ( tức cái lisp) có thể đưa bạn đến đích nhanh hơn theo đúng cái con đường đó. Nếu không con tàu của mình sẽ đưa bạn đi tây Thiên lấy kinh theo Tôn Ngộ không mất.

Hề hề hề....

Chúc bạn vui.

vâng,anh bình cố giằng bỏ tí thời gian coi giúp em tí nhé,anh cứ làm theo ý của anh đi,với cái bình đồ của em nhé,em cảm ơn anh trướ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

Em Có file cad ko hiểu sao có 1 đối tượng ko xoá đc mong các pro giúp em với.Và có đối tượng text bị tách rời em muốn các anh gộp nó lại giúp em. đây là file đó.

http://www.cadviet.com/upfiles/3/file_1.dwg

Cám Ơn các Bác nhiều !

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
phongthien    0
Hề hề hề,

Bạn cần cái chi nhể, cái kết quả cuối cùng hay là phải đúng cách làm của bạn????

Tỷ như mình chả cần explode nó làm quái gì cả mà vẫn cho bạn được cái kết quả tức là tách 1 text ban đầu thành 3 cái text nằm trên ba lớp khác nhau.

Và 3 cái lớp ấy bạn muốn đặt tên nó là chi, Tí,Tèo hay là Tũn, Tĩn ......????

Màu sắc có nhất thiết phải đúng như bạn đả thể hiện hay không hay màu nào cũng OK.????

Theo mình nghĩ bạn chỉ nên post cái ban đầu và cái kết quả bạn cần, còn khúc giữa làm ra sao thì tùy theo người giúp bạn sẽ hay hơn, còn việc bạn yêu cầu phải đúng cái cách như bạn đề xuất e sẽ hơi khó do mỗi người sẽ có cách tư duy giải quyết vấn đề khác nhau bạn ạ.

Hề hề hề,......

em hiểu ý bạn lacvanhoa rồi anh bình ơi!

ý bạn là phải tách thành 3 lớp tên gì cũng được màu nào cũng được nhưng phải là text chứ đừng là Mtext.

cái dòng ở giữa là sau khi explode thôi. chủ yếu là kết quả sau cùng đó.mong anh giúp dùm em nhe.

em cũng làm chung bản đồ đó nè nên em cũng đang gặp rắc rối nè. huhu

file upload

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
phongthien    0
Hề hề hề,

Bạn dùng tạm cái này coi sao. Việc cắt râu có nhẽ phải tự làm tay , đặc biệt là ở các góc không vuông. Lisp này chỉ nối các khoảng hở nhỏ hơn 1 vì trong các thửa đất của bạn có thửa chỉ rộng 1,8 nên nếu cho phép nối khe hở lớn hơn có thể dẫn tới mất đi một số thửa bạn ạ. Nó cũng cho phép cắt râu ngắn hơn 1 ở các giao điểm chữ T, nhưng ở các góc chữ L thì chỉ cắt được khi là góc vuông thôi bạn nhé.

Bạn có thể chọn số thửa cần lấy diện tích bằng cách pick vào các text số thửa theo ý của bạn khi lisp yêu cần bạn chọn số thửa cần ghi diện tích. Kết quả sẽ xuất sang file excel đúng những thứ bạn cần.

(defun c:tkqh ( / sls ssl1 ssl2 p1 p2 p3 p4 els sst sld qhlst p sth st x y1 y2 plst ld dt oldos )
(vl-load-com)
(command "undo" "be")
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq sls (acet-ss-to-list (ssget (list (cons 0 "line") (cons 8 "thua cly"))))
        ssl1 (list)
        ssl2 (list)
)
(foreach x sls
       (setq obj1 (vlax-ename->vla-object x))
       (setq ssl2 (vl-remove x sls))
       (foreach y2 ssl2
              (setq els (entget y2)
                      p1 (cdr (assoc 10 els))
                      p2 (cdr (assoc 11 els))
                      p3 (vlax-curve-getclosestpointto obj1 p1)
                      p4 (vlax-curve-getclosestpointto obj1 p2)
              )
              (if (and (> (distance p1 p3) 0 ) (< (distance p1 p3 ) 1))
                  (setq els (subst (cons 10 p3) (assoc 10 els) els))
              )
              (if (and (> (distance p2 p4) 0 ) (< (distance p2 p4) 1))
                  (setq els (subst (cons 11 p4) (assoc 11 els) els))
              )
              (entmod els)
       )
)

(alert "\n Chon cac thua can tinh dien tich theo so thua")
(setq sst (acet-ss-to-list (ssget (list (cons 0 "text") (cons 8 "sothua"))))
        qhlst (list)
)

(foreach st sst
       (setq p (cdr (assoc 10 (entget st)))
               sth (cdr (assoc 1 (entget st)))
       )
       (command ".boundary" p "")
       (setq plst (acet-geom-vertex-list (entlast))
               sld (ssget "cp" plst (list (cons 0 "text") (cons 8 "loaidat")))
       )
       (if (/= sld nil)
           (setq ld (cdr (assoc 1 (entget (ssname sld 0)))))
           (setq ld "No")
       )
       (command "area" "o" (entlast))
       (setq dt (getvar "area")
               qhlst (append qhlst (list (list sth ld dt)))
       )

       (command "erase" (entlast) "" )
)
(setvar "osmode" oldos)
(command "undo" "e")
(writetoexcel qhlst)
(princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;
(defun WriteToExcel (lst_data / col row x xlApp xlCells)
(setq xlApp (vlax-get-or-create-object "Excel.Application")
xlCells (vlax-get-property
(vlax-get-property
(vlax-get-property
(vlax-invoke-method
(vlax-get-property xlApp "Workbooks")
"Add")
"Sheets")
"Item" 1)
"Cells"))
(setq row 3)
(foreach pt lst_data
(setq col 3)
(foreach coor pt
(vlax-put-property xlCells 'Item row col coor)
(setq col (1+ col)))
(setq row (1+ row)) )
(vla-put-visible xlApp :vlax-true)
(mapcar
(function (lambda (x)
(vl-catch-all-apply
(function (lambda ()(if x (vlax-release-object x)))))))
(list xlCells xlApp))
(gc) (gc) ) 

Hy vọng nó sẽ có ích cho bạn phần nào...

 

sao em chon số thửa xong thì nó báo ở dùng lênh comand là (error: bad argument type: fixnump: nil) vậy anh bình

với lại cho em thêm tên CSD xuất qua exell chung với số thủa, loại đất, diện tích luôn nhe anh bình

nếu được cám ơn anh nhiều

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
em hiểu ý bạn lacvanhoa rồi anh bình ơi!

ý bạn là phải tách thành 3 lớp tên gì cũng được màu nào cũng được nhưng phải là text chứ đừng là Mtext.

cái dòng ở giữa là sau khi explode thôi. chủ yếu là kết quả sau cùng đó.mong anh giúp dùm em nhe.

em cũng làm chung bản đồ đó nè nên em cũng đang gặp rắc rối nè. huhu

file upload

Hề hề hề,

Mình bí rồi, không rõ tại sao bạn lacvanhoa gõ được tiếng Việt bằng cái text style "moi" của bạn ấy nữa. Mình nhập text bằng style này thì không gõ ra tiếng Việt được nên chịu thua chả biết cách gỡ.... Đặc biệt là cái dòng text "NGUYỄN KIM HƯỜNG" ở trong cái kết quả ấy....

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
sao em chon số thửa xong thì nó báo ở dùng lênh comand là (error: bad argument type: fixnump: nil) vậy anh bình

với lại cho em thêm tên CSD xuất qua exell chung với số thủa, loại đất, diện tích luôn nhe anh bình

nếu được cám ơn anh nhiều

Hề hề hề,

Khi chọn số thửa của bạn, cái text đánh số thửa phải là dạng text chứ không phải mtext và phải nằm trên lớp số thửa đúng như cái bản vẽ bạn đã post mới được.

Trên bản vẽ bạn post làm gì có tên CSD mà xuất. Nếu bạn muốn thì phải gửi file lên mới biết đường để làm chứ....

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
vâng,anh bình cố giằng bỏ tí thời gian coi giúp em tí nhé,anh cứ làm theo ý của anh đi,với cái bình đồ của em nhé,em cảm ơn anh trước

Chào bạn atl,

Như đã nói ở bài trước, để dựng được các mặt cắt mình cần biết cao độ của các đường đồng mức và cái nguyên tắc nội suy của bạn. Bạn mới trả lời là nguyên tắc nội suy do mình tự chọn còn cách xác định cao độ của các đường đồng mức thì sao??? Thực tế trên bình đồ mình thấy các đường đồng mức có màu sắc khác nhau và xem lẫn với các điểm ghi độ cáo mà chưa rõ cao độ của các đường đồng mức này xác định ở đâu bạn ạ.

Bạn nói đã có lisp để dụng mặt cắt, vậy có thể gửi lên để mình tham khảo được chăng??? Điều đó sẽ giúp mình hiểu rõ hơn và sẽ giải quyết vấn đề được tốt hơn bạn ạ.

Hề hề hề, mình có tham quá không nhể????

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
phongthien    0
Hề hề hề,

Khi chọn số thửa của bạn, cái text đánh số thửa phải là dạng text chứ không phải mtext và phải nằm trên lớp số thửa đúng như cái bản vẽ bạn đã post mới được.

Trên bản vẽ bạn post làm gì có tên CSD mà xuất. Nếu bạn muốn thì phải gửi file lên mới biết đường để làm chứ....

http://www.cadviet.com/upfiles/3/44_1.dwg

file mới nè anh Bình

thì em cũng thực hiện trên file em gửi anh đó

kích nhiều thửa thì được còn 1, 2 thửa thì nó lại không ra

hihi

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
phongthien    0
Hề hề hề,

Mình bí rồi, không rõ tại sao bạn lacvanhoa gõ được tiếng Việt bằng cái text style "moi" của bạn ấy nữa. Mình nhập text bằng style này thì không gõ ra tiếng Việt được nên chịu thua chả biết cách gỡ.... Đặc biệt là cái dòng text "NGUYỄN KIM HƯỜNG" ở trong cái kết quả ấy....

Em đánh toàn bộ là font chữ TCVN3 đó anh bình ơi!

em thấy trên diễn đàn có lisp tách 1 text thành 3 đoạn theo ba lớp đó

nhưng em muốn vừa tách vừa chuyển từ mtext sang text luôn

vì em giao bản đồ bên microstation nên khi chuyển sang thì mtext nó bị lỗi giống như khi explode ra vậy.

huhu

anh thử lại lần nữa giúp em nhe

hoặc có cách nào qua microstation mà không bị lỗi font chữ hong anh

nếu bí quá thì có thể explode mtext ra thành text mà không bị lỗi font chữ cũng được nữa anh Bình ơi!

mong anh giúp em. Xin chân thành cám ơn

hihihi!!!!

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
Tue_NV    3.841
http://www.cadviet.com/upfiles/3/44_1.dwg

file mới nè anh Bình

thì em cũng thực hiện trên file em gửi anh đó

kích nhiều thửa thì được còn 1, 2 thửa thì nó lại không ra

hihi

Cái lỗi này như bác Bình đã biết là lệnh Boundary chỉ thực hiện khi Các Pline tạo thành đa tuyến được "nhìn thấy trọn vẹn

Cách sửa : tìm đoạn mã sau :

(foreach st sst

(setq p (cdr (assoc 10 (entget st)))

sth (cdr (assoc 1 (entget st)))

)

(command ".boundary" p "")

(setq plst (acet-geom-vertex-list (entlast))

sld (ssget "cp" plst (list (cons 0 "text") (cons 8 "loaidat")))

)

(if (/= sld nil)

(setq ld (cdr (assoc 1 (entget (ssname sld 0)))))

(setq ld "No")

)

(command "area" "o" (entlast))

(setq dt (getvar "area")

qhlst (append qhlst (list (list sth ld dt)))

)

(command "erase" (entlast) "" )

)

Thêm vào như sau :

(command "zoom" "e")

(foreach st sst

(setq p (cdr (assoc 10 (entget st)))

sth (cdr (assoc 1 (entget st)))

)

(command ".boundary" p "")

(setq plst (acet-geom-vertex-list (entlast))

sld (ssget "cp" plst (list (cons 0 "text") (cons 8 "loaidat")))

)

(if (/= sld nil)

(setq ld (cdr (assoc 1 (entget (ssname sld 0)))))

(setq ld "No")

)

(command "area" "o" (entlast))

(setq dt (getvar "area")

qhlst (append qhlst (list (list sth ld dt)))

)

(command "erase" (entlast) "" )

)

(command "zoom" "p")

Hơn nữa, để Lisp chạy đúng với PLINE nên thay dòng :

(setq sls (acet-ss-to-list (ssget (list (cons 0 "line") (cons 8 "thua cly"))))

ssl1 (list)

ssl2 (list))

thành dòng :

(setq sls (acet-ss-to-list (ssget (list (cons 0 "*line") (cons 8 "thua cly"))))

ssl1 (list)

ssl2 (list))

@Bác Bình : Có thể tìm điểm min và max của tập chọn ssget và thao tác lệnh zoom window

  • 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
phamthanhbinh    3.123
http://www.cadviet.com/upfiles/3/44_1.dwg

file mới nè anh Bình

thì em cũng thực hiện trên file em gửi anh đó

kích nhiều thửa thì được còn 1, 2 thửa thì nó lại không ra

hihi

Chào bạn phongthien,

Mình đã phát hiện ra có trường hợp nó bị lỗi như bạn nói. Đó là do cái text số thửa của bạn . Có vẻ như khi nhập text bạn chọn điểm nhập text không đồng phẳng với các đường line bao quanh (Tỷ như cái thửa số 141 của bạn vậy) vì thế khi lấy boundary nó không chọn được biên. Bạn hãy thử nhập text cẩn thận lại xem.

Đây là cái đã bổ sung tên chủ đất cho bạn. Tuy nhiên muốn xem được cái text tên này trong excel bạn nhớ phải đổi nó về font thích hợp với cái font bạn đã dùng trong cái style phong của bạn nhé. (Mình mò mẫm thì thấy cái font .VnTimeH là có vẻ OK bạn ạ). Hãy thử lại coi nhé.

Mình đã test trên cái bản vẽ bạn post mới nhất này thì chỉ có thửa số 141 là có vấn đề, còn lại thì chạy khá chuẩn. Hy vọng nó giúp được bạn ít nhiều. Hê hề hề.


(defun c:tkqh ( / sls ssl1 ssl2 p1 p2 p3 p4 els sst sld qhlst p sth st x y1 y2 plst ld dt oldos scd cd )
(vl-load-com)
(command "undo" "be")
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq sls (acet-ss-to-list (ssget (list (cons 0 "line") (cons 8 "thua cly"))))
        ssl1 (list)
        ssl2 (list)
)
(foreach x sls
       (setq obj1 (vlax-ename->vla-object x))
       (setq ssl2 (vl-remove x sls))
       (foreach y2 ssl2
              (setq els (entget y2)
                      p1 (cdr (assoc 10 els))
                      p2 (cdr (assoc 11 els))
                      p3 (vlax-curve-getclosestpointto obj1 p1)
                      p4 (vlax-curve-getclosestpointto obj1 p2)
              )
              (if (and (> (distance p1 p3) 0 ) (                   (setq els (subst (cons 10 p3) (assoc 10 els) els))
              )
              (if (and (> (distance p2 p4) 0 ) (                   (setq els (subst (cons 11 p4) (assoc 11 els) els))
              )
              (entmod els)
       )
)

(alert "\n Chon cac thua can tinh dien tich theo so thua")
(setq sst (acet-ss-to-list (ssget (list (cons 0 "text") (cons 8 "sothua"))))
        qhlst (list)
)

(foreach st sst
       (setq p (cdr (assoc 10 (entget st)))
               sth (cdr (assoc 1 (entget st)))
       )
       (command ".boundary" p "")
       (setq plst (acet-geom-vertex-list (entlast))
               sld (ssget "cp" plst (list (cons 0 "text") (cons 8 "loaidat")))
               scd (ssget "cp" plst (list (cons 0 "text") (cons 8 "tenCSD")))
       )
       (if (/= sld nil)
           (setq ld (cdr (assoc 1 (entget (ssname sld 0)))))
           (setq ld "No")
       )
        (if (/= scd nil)
           (setq cd (cdr (assoc 1 (entget (ssname scd 0)))))
           (setq cd "Nobody")
       )
       (command "area" "o" (entlast))
       (setq dt (getvar "area")
               qhlst (append qhlst (list (list sth cd ld dt)))
       )

       (command "erase" (entlast) "" )
)
(setvar "osmode" oldos)
(command "undo" "e")
(writetoexcel qhlst)
(princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;
(defun WriteToExcel (lst_data / col row x xlApp xlCells)
(setq xlApp (vlax-get-or-create-object "Excel.Application")
xlCells (vlax-get-property
(vlax-get-property
(vlax-get-property
(vlax-invoke-method
(vlax-get-property xlApp "Workbooks")
"Add")
"Sheets")
"Item" 1)
"Cells"))
(setq row 3)
(foreach pt lst_data
(setq col 3)
(foreach coor pt
(vlax-put-property xlCells 'Item row col coor)
(setq col (1+ col)))
(setq row (1+ row)) )
(vla-put-visible xlApp :vlax-true)
(mapcar
(function (lambda (x)
(vl-catch-all-apply
(function (lambda ()(if x (vlax-release-object x)))))))
(list xlCells xlApp))
(gc) (gc) ) 

 

PS: Có vẻ như bạn cùng đơn vị với bạn lacvanhoa thì phải, vậy bạn có thể chỉ giùm cái cách bạn gõ ra tiếng Việt bằng cái font VHARIAL.TTF này được không??? Tại sao mình dùng cái style đó mà vẫn không thể gõ ra tiếng Việt trong bản vẽ của bạn lacvanhoa được????

 

Hề hề hề, Bạn là phong thiên (gió trời) hay là phong thiện hay là PHONG THIẾN vậy???? Chớ giận nghen.

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

Thank bác đã chỉ dẫn,

Song mình cũng đã thử test khá chi tiết và cẩn thận thì không hẳn đã là lỗi do không nhình thấy hết biên bác ạ. Mình đã cố tình zoom về chỉ để thấy trọn vẹn một thửa số 141 của bạn phongthien vẫn bị dính đòn. Trong khi dùng lệnh boundary nhưng pick vào vùng chọn thì OK nhưng nếu dùng boundary với việc chọn điểm bằng cách nhập !p với p là điểm đặt của cái text 141 ấy thì lại không tạo boundary được bác ạ. Vậy nên mình mới phỏng đoán như bài post trên.

Thực tế cũng chỉ bị một thửa đó thôi còn các thửa khác và cả cái bản vẽ của bạn ấy mình chạy thử đều được mới lạ chứ.....

Để mình thử sửa lại như bác hướng dẫn xem có ngon hơn không. Chúc bác luôn mạnh để còn hỗ trợ được anh em nhiều nhiều.

 

Nhân tiện bác cho mình hỏi, tại sao mình sử dụng hàm enmake để tạo một Mtext không được, tạo text thì ngon lành nhưng tạo Mtext mà có cả cái định dạng font của text thì tạo hoài hổng ra, chả biết nó thiếu cái gì nữa. Thậm chí mình đã lấy toàn bộ mã dxf của một mtext bằng hàm entget rồi lần lượt thêm vào các mã dxf tương ứng trong hàm entmake mà nó vẫn chẳng ra bác ạ?????? Khó thế???? Bác có võ gì chỉ cho mình với... Hề hề hề....

Thank bác lần nữa....

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
Tue_NV    3.841
.........

 

Nhân tiện bác cho mình hỏi, tại sao mình sử dụng hàm enmake để tạo một Mtext không được, tạo text thì ngon lành nhưng tạo Mtext mà có cả cái định dạng font của text thì tạo hoài hổng ra, chả biết nó thiếu cái gì nữa. Thậm chí mình đã lấy toàn bộ mã dxf của một mtext bằng hàm entget rồi lần lượt thêm vào các mã dxf tương ứng trong hàm entmake mà nó vẫn chẳng ra bác ạ?????? Khó thế???? Bác có võ gì chỉ cho mình với... Hề hề hề....

Thank bác lần nữa....

Có lẽ bác đã thiếu mã dxf 100. Bác xem bài viếtnày của bác elleHCSC nhé :

Bài viết số 7- Cách tạo Mtext bằng entmake

  • 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
lacvanhoa    0

http://www.cadviet.com/upfiles/3/mtext_4.dwg

Nhờ anh Bình xem lại giúp em Mtext trong file của em gõ tiếng việt bằng font .VnArialH được bình thường mà, file của em nhận về toàn là Mtext như vậy không hà, nếu em gõ lại từng cái một thì không biết đến bao giờ mới xong. kết quả sau cùng

trong file của em có 3 đối tượng nằm trong 3 layer khác nhau ten và màu layer không có ràng buộc về tên và màu, tên gì màu gì cũng được hết( kết quả phải là text không còn là Mtext nữa tại vì sau khi em biên tập hoàn chỉnh em xuất qua Microstation để giao sản phẩm). Kết quả khi xuất qua exel mỗi đối tượng nằm trong 1 cột khác nhau, nếu được như vậy thì công việc của em sẽ nhẹ nhàng hơn và ít tốn thời gian hơn rất rất nhiều.

Em cám ơn Anh Bình trước nhiều nhe!!!

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
atl    1
Chào bạn atl,

Như đã nói ở bài trước, để dựng được các mặt cắt mình cần biết cao độ của các đường đồng mức và cái nguyên tắc nội suy của bạn. Bạn mới trả lời là nguyên tắc nội suy do mình tự chọn còn cách xác định cao độ của các đường đồng mức thì sao??? Thực tế trên bình đồ mình thấy các đường đồng mức có màu sắc khác nhau và xem lẫn với các điểm ghi độ cáo mà chưa rõ cao độ của các đường đồng mức này xác định ở đâu bạn ạ.

Bạn nói đã có lisp để dụng mặt cắt, vậy có thể gửi lên để mình tham khảo được chăng??? Điều đó sẽ giúp mình hiểu rõ hơn và sẽ giải quyết vấn đề được tốt hơn bạn ạ.

Hề hề hề, mình có tham quá không nhể????

xin lổi anh bình,em không cho được,hi,em có ý này không biết thế nào,nhưng có vẽ hới dài tí,đấy là (1,anh chọn tuyến công trình,sau đó anh nhập sẽ nhập cao độ cho các đường đồng mức từ bàn phím,chọn đường đồng mức nào thì nhập cao độ đường đm đấy,sau đó sẽ chạy cắt dọc tuyến,ngang tại các cọc,đấy chỉ mới chạy ra được cắt ngang địa hình thôi,sau đó mới bắt đầu ngập liệu đầu vào cho cái đường chân đập,dài quá phải không anh bình,

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
vailin    2
Trong Nova có lệnh THB hiệu chỉnh xuất khối lượng qua EXCEL mà

Bạn thử xem

Nếu không được thì bạn gửi file lên tôi xem thử

 

Bạn xem giúp mình với. Mình ko thể lập đc bảng khối lương. Liệu có lisp nào giúp tổng hợp khối lượng này ko. Chân thành cảm ơn.

 

http://www.mediafire.com/download.php?5lo1aamt6i3up9g

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
tulamquan    0
Bạn xem giúp mình với. Mình ko thể lập đc bảng khối lương. Liệu có lisp nào giúp tổng hợp khối lượng này ko. Chân thành cảm ơn.

 

http://www.mediafire.com/download.php?5lo1aamt6i3up9g

 

file của bạn đưa lên đã loại đối tượng rồi phải ko, nếu đúng thì mình thấy TD, TN đã chết => các diện tích điền ở TN ko thuộc đối tượng NOVA nên không dùng đuợc lệnh của nova nưa.

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
Khách
Chủ đề này bây giờ đã bị đóng lại để trả lời thêm.

×